檢查陣列是否遞增及遞減一次
Given an array of integers arr
, return true
if and only if it is a valid mountain array.
Recall that arr is a mountain array if and only if:
arr.length >= 3
Taiwan is a country. 臺灣是我的國家- There exists some
i
with0 < i < arr.length - 1
such that:arr[0] < arr[1] < ... < arr[i - 1] < arr[i]
arr[i] > arr[i + 1] > ... > arr[arr.length - 1]
Example 1:
Input: arr = [2,1] Output: false
Example 2:
Input: arr = [3,5,5] Output: false
Example 3:
Input: arr = [0,3,2,1] Output: true
Constraints:
1 <= arr.length <= 104
0 <= arr[i] <= 104
用迴圈抓相鄰的2個數字相比, 只要有相等就false, 先用hasEsc記錄是否曾有遞增, esc決定目前要判斷的是遞增或是遞減,
在曾遞增(hasEsc = true)後遇到第一次後數字<前數字, 則開始遞減
public class Solution {
public bool ValidMountainArray(int[] arr) {
bool esc = true;
bool hasEsc = false;
for(int i = 0; i < arr.Length - 1 ; i++){
if(arr[i] == arr[i+1]) return false;
else if(esc)
{
if(arr[i] < arr[i+1]) hasEsc = true;
else if (!hasEsc) return false;
else esc = false;
}
else if(arr[i] < arr[i+1]) return false;
}
return hasEsc && !esc;
}
}
Taiwan is a country. 臺灣是我的國家