75.颜色分类


原地排序:空间复杂度为1

cpp 复制代码
class Solution {
public:
    void sortColors(vector<int>& nums) {
        if(0){
            //法一:单指针两个遍历
            int n=nums.size();
            int ptr=0;
            for(int i=0;i<n;i++){
                if(nums[i]==0){
                    swap(nums[i],nums[ptr]);
                    ++ptr;
                }
            }
            for(int i=ptr;i<n;i++){
                if(nums[i]==1){
                    swap(nums[i],nums[ptr]);
                    ++ptr;
                }
            }
        }else if(1){
            //双指针法
            int n=nums.size();
            int p0=0,p2=n-1;
            int i=0;
            while(i<=p2){
                if(nums[i]==0){
                    swap(nums[i],nums[p0]);
                    ++p0;
                    ++i;
                }else if(nums[i]==1){
                    ++i;
                }else{
                    swap(nums[i],nums[p2]);
                    --p2;
                }
            } 
        }
        return;
    }
};
相关推荐
满分观察网友z16 分钟前
从UI噩梦到导航之梦:一道LeetCode经典题如何拯救了我的项目(116. 填充每个节点的下一个右侧节点指针)
算法
DoraBigHead1 小时前
小哆啦解题记——两数失踪事件
前端·算法·面试
不太可爱的大白1 小时前
Mysql分片:一致性哈希算法
数据库·mysql·算法·哈希算法
Tiandaren5 小时前
Selenium 4 教程:自动化 WebDriver 管理与 Cookie 提取 || 用于解决chromedriver版本不匹配问题
selenium·测试工具·算法·自动化
岁忧6 小时前
(LeetCode 面试经典 150 题 ) 11. 盛最多水的容器 (贪心+双指针)
java·c++·算法·leetcode·面试·go
chao_7896 小时前
二分查找篇——搜索旋转排序数组【LeetCode】两次二分查找
开发语言·数据结构·python·算法·leetcode
秋说8 小时前
【PTA数据结构 | C语言版】一元多项式求导
c语言·数据结构·算法
Maybyy8 小时前
力扣61.旋转链表
算法·leetcode·链表
谭林杰9 小时前
B树和B+树
数据结构·b树
卡卡卡卡罗特10 小时前
每日mysql
数据结构·算法