理解题,全局倒置就是不相邻的逆序对,局部倒置就是相邻的逆序对。提示中给出,
0
<
=
n
u
m
s
[
i
]
<
n
0 <= nums[i] < n
0<=nums[i]<n ,其中
n
=
=
n
u
m
s
.
l
e
n
g
t
h
n == nums.length
n==nums.length ,
n
u
m
s
nums
nums 中的所有整数 互不相同,可知
n
u
m
s
nums
nums 中包含
0
0
0 到
n
−
1
n-1
n−1 所有数。
分情况理解:
本题之所以这么简单,是因为题目限制诸多。如果没有 n u m s nums nums 是范围 [ 0 , n − 1 ] [0, n - 1] [0,n−1] 内所有数字组成的一个排列,这个限制,那么博主一时之间只能想到暴力循环了~
class Solution {
public:
bool isIdealPermutation(vector<int>& nums) {
for(int i = 0;i<nums.size();i++)
if(nums[i]!= i &&i-1!=nums[i]&&i+1!=nums[i]) return false;
return true;
}
};
class Solution {
public:
bool isIdealPermutation(vector<int>& nums) {
for(int i = 0;i<nums.size();i++)
if(abs(nums[i]-i)>1) return false;
return true;
}
};
理解思路很重要!
欢迎读者在评论区留言,作为日更博主,看到就会回复的。
