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

相关推荐
市场部需要一个软件开发岗位2 分钟前
一个无人机平台+算法监督平台的离线部署指南
java·python·算法·bash·无人机·持续部署
凤山老林3 分钟前
SpringBoot + MyBatis-Plus 如何高效实现数据变更记录
java·spring boot·mybatis
ygklwyf5 分钟前
零基础薄纱树套树——高级数据结构的结合
算法·线段树·树状数组·树套树
Vivienne_ChenW7 分钟前
Spring 事件驱动用法总结
java·开发语言·spring boot·spring
毕设源码-邱学长14 分钟前
【开题答辩全过程】以 基于Springboot个人健康运动系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
愿你天黑有灯下雨有伞14 分钟前
Spring Boot + FastExcel:打造完美的导入校验功能
java·spring boot·后端
Rainly200015 分钟前
java原生实现企业级spring batch数据迁移
java·spring·batch
Hello World . .18 分钟前
排序算法:常用排序算法
c语言·数据结构·算法·vim·排序算法
綦枫Maple19 分钟前
IDEA选择“在当前窗口打开”还是“新窗口打开”的提示不见了,如何恢复?
java·ide·intellij-idea