Leetcode—3011. 判断一个数组是否可以变为有序【中等】(__builtin_popcount()、ranges::is_sorted())

2024每日刷题(144)

Leetcode---3011. 判断一个数组是否可以变为有序

O(n)复杂度实现代码

cpp 复制代码
class Solution {
public:
    bool canSortArray(vector<int>& nums) {
        // 二进制数位下1数目相同的元素就不进行组内排序
        // 只进行分组
        // 当前组的值若小于上一组的最大值, 就立即返回false
        int curMax = nums[0];
        int preMax = INT_MIN;
        for(int i = 0; i < nums.size(); i++) {
            int n = __builtin_popcount(nums[i]);
            while(i < nums.size() && __builtin_popcount(nums[i]) == n) {
                if(nums[i] < preMax) {
                    return false;
                }
                curMax = max(curMax, nums[i]);
                i++;
            }
            preMax = curMax;
            i--;
        }
        return true;
    }
};

运行结果

sort实现代码

cpp 复制代码
class Solution {
public:
    bool canSortArray(vector<int>& nums) {
        int start = 0;
        for(int i = 1; i < nums.size(); i++) {
            int n = __builtin_popcount(nums[start]);

            // 先找到二进制数位为1的数目相同组
            while(i < nums.size() && __builtin_popcount(nums[i]) == n) {
                i++;
            }

            // 然后组内冒泡排序
            ranges::sort(nums.begin() + start, nums.begin() + i);
            start = i;
        }
        return ranges::is_sorted(nums);
    }
};

运行结果

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

相关推荐
wxin_VXbishe44 分钟前
springboot在线课堂教学辅助系统-计算机毕业设计源码07741
java·c++·spring boot·python·spring·django·php
夕泠爱吃糖1 小时前
template关键字
开发语言·c++·template
mit6.8241 小时前
[Avoid-MPC] AvoidanceStateMachine | `Step`心跳函数 | Callback设计
c++
ceclar1231 小时前
C++文件操作
开发语言·c++
爱学测试的雨果1 小时前
14:00面试,14:06就出来了,问的问题过于变态了。。。
面试·职场和发展
CSDN_RTKLIB1 小时前
【动态链接库】一、VS下基本制作与使用
c++
高一要励志成为佬1 小时前
【C++】vector的迭代器失效问题,(什么是迭代器失效,为什么会产生迭代器失效,怎么避免迭代器失效问题)
开发语言·c++
程序员三藏1 小时前
使用Docker和Selenium构建自动化测试环境
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
WPG大大通1 小时前
【经验分享】Genio 520/Genio720未使用引脚处理方法
经验分享·笔记·信号处理·模块测试·usb·功能模块
CoovallyAIHub2 小时前
空间智能!李飞飞、LeCun&谢赛宁联手提出“空间超感知”,长文阐述世界模型蓝图
深度学习·算法·计算机视觉