775. 全局倒置与局部倒置
1. 题目描述
2. 思路
分析题目不难得出:
局部倒置一定满足全局倒置
,所以我们只需要判断是否存在(i, j) 是全局倒置,但不是局部倒置
《=》
查找 nums 中是否存在nums[i] > nums[j] (j >= i + 2)
具体代码实现,可以重新建数组int[] min (min[i] 表示 nums[i] ~ nums[len - 1] 的最小值),也可以倒序遍历数组,用一个变量 min 去维护 i ~ len - 1的最小值
3. coding
class Solution {
public boolean isIdealPermutation(int[] nums) {
int len = nums.length;
int min = nums[len - 1];
for (int i = len - 3; i >= 0 ; i --) {
if (nums[i] > min) {
return false;
}
min = Math.min(min, nums[i + 1]);
}
return true;
}
}