力扣算法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 后面

相关推荐
Peter·Pan爱编程9 小时前
14. Lambda 表达式:随手可写的函数对象
c++·算法·ai编程
-To be number.wan9 小时前
算法日记 | 暴力枚举
学习·算法
大鹏说大话9 小时前
SQL 排序与分组实战:解决“分组后取最新数据“
android·java·数据库
云烟成雨TD10 小时前
Spring AI Alibaba 1.x 系列【64】 ReactAgent 长期记忆
java·人工智能·spring
s_w.h10 小时前
【 linux 】动静态库的制作
linux·运维·服务器·算法·bash
quan263110 小时前
20260529,日常开发-数据库主从问题
java·mysql·主从·延迟
JacksonMx10 小时前
@Transactional 最佳实践
java·spring boot·spring·性能优化
Sincerelyplz10 小时前
【AI会议纪要实践】mapReduce、RAG 与结构化输出
java·后端·agent
过期动态10 小时前
【LeetCode 热题 100】接雨水
java·数据结构·算法·leetcode·职场和发展
春日见10 小时前
5分钟入门强化学习之动态规划算法与实现
大数据·人工智能·python·算法·机器学习·计算机视觉