3011. 判断一个数组是否可以变为有序
题目链接:3011. 判断一个数组是否可以变为有序
代码如下:
class Solution
{
public:
bool canSortArray(vector<int>& nums)
{
int pre_max = 0;
for (int i = 0; i < nums.size();)
{
int cur_max = 0;
//__builtin_popcount()用于计算一个 32 位无符号整数有多少个位为1__builtin_popcount()用于计算一个 32 位无符号整数有多少个位为1
int ones = __builtin_popcount(nums[i]);
while (i < nums.size() && __builtin_popcount(nums[i]) == ones)
{
//无法进行有效排序
if (nums[i] < pre_max) { return false; }
cur_max = max(cur_max, nums[i++]);
}
pre_max = cur_max;
}
return true;
}
};