本題資訊
難度: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 <= j
, nums[i] <= nums[j]
. An array nums
is monotone decreasing if for all i <= j
, nums[i] >= nums[j]
.
Given an integer array array
, return true
if the given array is monotonic, or false
otherwise.
這題要我們判斷一個陣列是不是單調遞增或是單調遞減,這題還記得單調性這個數學概念的話,應該會做蠻快的。
Idea
這個題目我最直接的想法也是設定兩個 index i
和 j
逐一比對這樣。但其實從 monotonic 定義出發,只要前後兩個比較即可,也就是說只需要 index i
和 i-1
。另外這一題只需要回傳 true
或 false
,不用回傳到底是遞增或遞減。當初我卡在要儲存結果,又要拿儲存結果去判斷,非常畫蛇添足。其實只要不合定義,就直接給他 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; }