如果数组是单调递增或单调递减的,那么它是 单调 的。
如果对于所有 i <= j,nums[i] <= nums[j],那么数组 nums 是单调递增的。 如果对于所有 i <= j,nums[i]> = nums[j],那么数组 nums 是单调递减的。
当给定的数组 nums 是单调数组时返回 true,否则返回 false。
示例 1:
输入:nums = [1,2,2,3]
输出:true
示例 2:
输入:nums = [6,5,4,4]
输出:true
示例 3:
输入:nums = [1,3,2]
输出:false
提示:
1 <= nums.length <= 105
-105 <= nums[i] <= 105
链接:https://leetcode-cn.com/problems/monotonic-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
package cn.fansunion.leecode.array.max;
/**
* 896. 单调数列 <br/>
* 如果数组是单调递增或单调递减的,那么它是 单调 的。 <br/>
*
* 如果对于所有 i <= j,nums[i] <= nums[j],那么数组 nums 是单调递增的。 <br/>
* 如果对于所有 i <= j,nums[i] >= nums[j],那么数组 nums 是单调递减的。 <br/>
*
* 当给定的数组 nums 是单调数组时返回 true,否则返回 false。 <br/>
*
* 来源:力扣(LeetCode) 链接:力扣 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
*
* @author wen.lei@brgroup.com
*
* 2022-3-9
*/
public class MonotonicArray {
/* 示例 1:
输入:nums = [1,2,2,3]
输出:true
示例 2:
输入:nums = [6,5,4,4]
输出:true
示例 3:
输入:nums = [1,3,2]
输出:false*/
public boolean isMonotonic(int[] nums) {
return isAsc(nums) || isDesc(nums);
}
// 是否降序
private boolean isDesc(int[] nums) {
int prev = Integer.MAX_VALUE;
// 降序时,当前的 不应该比 前面的大
for (int cur : nums) {
if (cur > prev) {
return false;
}
prev = cur;
}
return true;
}
// 是否升序
private boolean isAsc(int[] nums) {
int prev = Integer.MIN_VALUE;
// 升序时,当前的 不应该比 前面的小
for (int cur : nums) {
if (cur < prev) {
return false;
}
prev = cur;
}
return true;
}
}
package test.leecode.array;
import org.junit.Assert;
import org.junit.Test;
import cn.fansunion.leecode.array.max.MonotonicArray;
/**
* @author wen.lei@brgroup.com
*
* 2022-2-25
*/
public class MonotonicArrayTest {
@Test
public void test() {
MonotonicArray test = new MonotonicArray();
Assert.assertTrue(test.isMonotonic(new int[] {1, 2, 3, 4}));
Assert.assertTrue(test.isMonotonic(new int[] {1, 3, 4}));
Assert.assertTrue(test.isMonotonic(new int[] {1, 0, 0}));
Assert.assertTrue(test.isMonotonic(new int[] {9, 8, 8, 1}));
Assert.assertFalse(test.isMonotonic(new int[] {1, 3, 2, 4}));
Assert.assertFalse(test.isMonotonic(new int[] {1, 4, 1}));
Assert.assertFalse(test.isMonotonic(new int[] {1, 0, 1}));
Assert.assertFalse(test.isMonotonic(new int[] {1, 0, -1,-2,-1}));
}
}