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)

相关推荐
伊玛目的门徒8 小时前
试用leetcode之典中典 二数之和问题
java·算法·leetcode
旖-旎11 小时前
《LeetCode647 回文子串 || LeetCode 5 最长回文子串》
c++·算法·leetcode·动态规划·哈希算法
怪兽学LLM14 小时前
LeetCode 105. 从前序与中序遍历序列构造二叉树:分治递归思路详解
算法·leetcode·职场和发展
退休倒计时15 小时前
【每日一题】LeetCode 39. 组合总和 TypeScript
算法·leetcode·typescript
Scabbards_16 小时前
面试Leetcode - Array
leetcode·面试·职场和发展
兰令水17 小时前
hot100【acm版】【2026.7.13打卡-java版本】
java·开发语言·数据结构·算法·leetcode·面试
Tisfy18 小时前
LeetCode 1291.顺次数:打表/枚举
算法·leetcode·题解·枚举·遍历
罗超驿19 小时前
双指针算法详解:从入门到精通(Java版)
算法·leetcode·职场和发展
tkevinjd19 小时前
力扣300-最长递增子序列
算法·leetcode·职场和发展·动态规划·贪心
aqiu1111111 天前
【算法日记20】LeetCode 438. 找到所有字母异位词:定长滑动窗口的极致优雅
算法·leetcode·职场和发展