力扣算法Hot100——75. 颜色分类

解法1: 当然可以冒泡排序,时间复杂度O( n 2 n^2 n2)

解法2:单指针

循环两次,第一次循环将所有的 0 交换到前面;

第二次循环将所有的 1 交换到 0 的后面

java 复制代码
class Solution {
    public void sortColorsBySinglePointer(int[] nums) {
        int zeroCnt = 0, p = 0;
        for (int i = 0; i < nums.length ; i++) {
            if (nums[i] == 0) {
                p = nums[zeroCnt];
                nums[zeroCnt] = 0;             
                nums[i] = p;
                zeroCnt++;
            }
        }
        // 继续沿着zeroCnt的位置放 1
        for (int i = 0; i < nums.length ; i++) {
            if (nums[i] == 1) {
                p = nums[zeroCnt];
                nums[zeroCnt] = 1;
                nums[i] = p;
                zeroCnt++;
            }
        }
    }
}

解法3:双指针

使用一次循环,过程中使用两个指针,将所有的 0 放前面,所有的 2 放后面

或者将所有的 0 放前面,所有的 1 放 0 后面

相关推荐
uhakadotcom1 分钟前
CUDA编程入门:加速计算的强大工具
算法·面试·架构
wgc2k8 分钟前
吴恩达机器学习笔记复盘(六)梯度下降算法
笔记·算法·机器学习
爱的叹息13 分钟前
java TCP UDP 客户端访问例子和对比差异
java·tcp/ip·udp
江沉晚呤时16 分钟前
C# 事件机制详解:定义、订阅、触发与应用实践
java·前端·c#·.netcore
白鹭鸣鸣!32 分钟前
力扣热题100(方便自己复习,自用)
算法·leetcode·职场和发展
WanderInk1 小时前
深入理解 JWT 中 Claims 的设计及其合理性
java·后端
yyyyyyykk1 小时前
Java线程
java·开发语言
爱喝热水的呀哈喽1 小时前
Java继承与反思,单例模式与静态的思考
java·python·单例模式
糖心何包蛋爱编程1 小时前
(六)Reactive-Stream 响应式流
java·开发语言·响应式编程·干货分享
钮钴禄·爱因斯晨1 小时前
探秘 Java ArrayList 集合:解锁数据存储新姿势
java·开发语言·python