我是靠谱客的博主 害怕酒窝,这篇文章主要介绍LeetCode算法题:单调数列isMonotonic,现在分享给大家,希望可以做个参考。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
如果数组是单调递增或单调递减的,那么它是单调的。 如果对于所有 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) 链接:https://leetcode-cn.com/problems/monotonic-array 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:i j分别代表递增和递减,如果是单调函数,i and j其中有一个能走到数组的尾。如不是则不能。

代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public boolean isMonotonic(int[] A) { int length = A.length; int i = 0,j = 0; //i为递增,j为递减 while(i <= length-2 && A[i] <= A[i+1])i++; if(i == length-1)return true; while(j <= length-2 && A[j] >= A[j+1])j++; if(j == length-1)return true; return false; }

思路2:设一标志位flag,判断数组递增还是递减,然后依据标志位的值来进行下一步判断

代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public boolean isMonotonic(int[] A) { int flag = -1; //0递减,1递增 -1不确定 for (int i = 0; i < A.length-1; i++) { if(flag == -1){ if(A[i] < A[i+1]){ flag = 1; }else if(A[i] > A[i+1]){ flag = 0; } }else if(flag == 1){ if(A[i] > A[i+1])return false; }else if(flag == 0){ if (A[i] < A[i+1])return false; } } return true; }

最后

以上就是害怕酒窝最近收集整理的关于LeetCode算法题:单调数列isMonotonic的全部内容,更多相关LeetCode算法题内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部