力扣hot100 颜色分类 双指针 滚动赋值

发布时间:2024年01月16日

Problem: 75. 颜色分类
在这里插入图片描述

思路

解题方法

描述你的解题方法

复杂度

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

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

Code

class Solution {
public void sortColors(int[] nums)
	{
		int n = nums.length;
		int p0 = 0;// 当前已知的最后一个0在数组中的下标(0元素的个数)
		int p2 = n - 1;
		for (int i = 0; i <= p2; i++)
		{
			while (i <= p2 && nums[i] == 2)
			{
//				nums[i] 与 nums[p2] 交换,即把 2 放到后面
				int t = nums[i];
				nums[i] = nums[p2];
				nums[p2] = t;
				p2--;
			}
			if (nums[i] == 0)
			{
//				nums[i] 与 nums[p0] 交换,即把 0 放到后面
				int t = nums[i];
				nums[i] = nums[p0];
				nums[p0] = t;
				p0++;
			}
		}
	}
}

💖 超简洁版

👨?🏫 参考题解

class Solution {
    public void sortColors(int[] nums) {
        int n0 = 0, n1 = 0;
        for(int i = 0; i < nums.length; i++){
            int num = nums[i];
            nums[i] = 2;
            if(num < 2){
                nums[n1++] = 1;
            }
            if(num < 1){
                nums[n0++] = 0;
            }
        }
    }
}
文章来源:https://blog.csdn.net/lt6666678/article/details/135615837
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。