Leetcode 75 Sort colors

题意:荷兰国旗问题,给一个数组0,0,2,1,0,构造成0,0,0,1,2的形式,分成三块

https://leetcode.com/problems/sort-colors/description/

题解:

在任意时刻,i 左边的数都是 0,k 右边的数都是 2,而 i 到 j 之间的数都是 1。

想象有三个指针, i , j , k i, j, k i,j,k 维护 0 , i ) \[0,i) \[0,i)为0,维护$\[i,j)为1,\[j, nums.size()为2

想象有三个指针在动,i代表起始位置,k代表末尾位置,j遍历整个数组,移动j,当j的值指向的数字为0,的时候那么跟i交换,移动的过程中j >=i

cpp 复制代码
class Solution {
public:
    void sortColors(vector<int>& nums) {
        for(int i = 0, j = 0, k = nums.size()-1; k >= j;) {
            if(!nums[j]) {
                swap(nums[i++], nums[j++]);
            } else if( nums[j] == 2) {
                swap(nums[j],nums[k--]);
            } else j++;
        }
    }
};

时间复杂度 O ( n ) O(n) O(n)

空间复杂度 O ( 1 ) O(1) O(1)

相关推荐
橘子汽水1683 小时前
Leetcode 23,543合并K个升序链表,二叉树的直径
算法·leetcode·链表
Re.不晚6 小时前
挑战做100道力扣算法- DAY1
算法·leetcode·职场和发展
青山木7 小时前
Hot 100 --- 搜索插入位置
java·数据结构·算法·leetcode
星轨初途9 小时前
LeetCode 热题 100——day2 字母异位词分组
c++·算法·leetcode
雪碧聊技术13 小时前
力扣 72. 编辑距离——动态规划经典例题
算法·leetcode·动态规划
木井巳13 小时前
【DFS解决floodfill算法】岛屿的最大面积
java·算法·leetcode·深度优先
Tisfy13 小时前
LeetCode 1406.石子游戏 III:递归(DFS+记忆化) / 递推(DP+原地滚动)
leetcode·游戏·深度优先·dfs·题解·博弈
yyds_yyd_1008613 小时前
877. 石子游戏(2026.08.02)& 486. 预测赢家(2026.08.01)
c++·leetcode
宵时待雨15 小时前
优选算法专题11:栈
算法·leetcode·职场和发展
普通攻击往后拉1 天前
Leetcode 206. 反转链表
算法·leetcode·链表