[演算法題目] Monotonic Array

本題資訊

難度:easy
使用語言:C++
相關概念:Arrays


題目敘述

An array is monotonic if it is either monotone increasing or monotone decreasing.

An array nums is monotone increasing if for all i <= jnums[i] <= nums[j]. An array nums is monotone decreasing if for all i <= jnums[i] >= nums[j].

Given an integer array array, return true if the given array is monotonic, or false otherwise.

這題要我們判斷一個陣列是不是單調遞增或是單調遞減,這題還記得單調性這個數學概念的話,應該會做蠻快的。

Idea

這個題目我最直接的想法也是設定兩個 index ij 逐一比對這樣。但其實從 monotonic 定義出發,只要前後兩個比較即可,也就是說只需要 index ii-1。另外這一題只需要回傳 truefalse,不用回傳到底是遞增或遞減。當初我卡在要儲存結果,又要拿儲存結果去判斷,非常畫蛇添足。其實只要不合定義,就直接給他 false,無須多言XD 最後也是利用「or」的條件判斷回傳,不用搞得太複雜。

using namespace std;

bool isMonotonic(vector<int> array) {
  bool is_nonIncrease = true;
  bool is_nonDecrease = true;

  for (int i = 1; i < array.size(); i++){
    if (array[i-1] < array[i]){
      is_nonIncrease = false;
    }
    if (array[i-1] > array[i]){
      is_nonDecrease = false;
    }
  }
  return is_nonIncrease || is_nonDecrease;
}

讓我知道你在想什麼!