1. 程式人生 > >力扣896. 單調數列-C語言實現-簡單題

力扣896. 單調數列-C語言實現-簡單題

# 題目 [傳送門](https://leetcode-cn.com/problems/monotonic-array) ## 文字 >如果陣列是單調遞增或單調遞減的,那麼它是單調的。 如果對於所有 i <= j,A[i] <= A[j],那麼陣列 A 是單調遞增的。 如果對於所有 i <= j,A[i]> = A[j],那麼陣列 A 是單調遞減的。 當給定的陣列 A 是單調陣列時返回 true,否則返回 false。 示例 1: >輸入:[1,2,2,3] 輸出:true 示例 2: >輸入:[6,5,4,4] 輸出:true 示例 3: >輸入:[1,3,2] 輸出:false 示例 4: >輸入:[1,2,4,5] 輸出:true 示例 5: >輸入:[1,1,1] 輸出:true 提示: 1 <= A.length <= 50000 -100000 <= A[i] <= 100000 來源:力扣(LeetCode) ## 模板 ```c bool isMonotonic(int* A, int ASize){ } ``` # 解題 ## 分析 我們要完成的是對於這個陣列判斷其是否是單調陣列,所以我們可以通過資料對比,讓陣列進行一個判斷部分割槽間的增減狀態,如果存在有不同的增減狀態就不是單調陣列。 所以既然是增減都存在的情況之下就會返回false那麼我們可以理解為情況1和情況2 如果檢測都第i個元素比第i+1個元素小,那麼就是遞增,這時候給遞減標誌打false,如果後面再遇上第i'元素比i'+1元素大,這個小區間就是遞減,我們對遞增標誌打false。當兩個標誌都是false的時候就返回false,否則都返回true。所以兩個標誌之間的連線方式用||(或)來連線,這時候只有兩個都是false才會返回false。 首先賦值兩個標誌 ```c bool a=true,b=true; ``` 進行內部迴圈判斷,因為我們需要對於i和i+1進行判斷所以我們最後的界限是ASize-1。 ```c for( int i=0;iA[i+1])a=false; if(A[i] False||True=True; True||True=True; False||False=False; ## 完整原始碼 ```c bool a=true,b=true; for( int i=0;iA[i+1])a=false; if(A[i]