当前位置: 首页 > article >正文

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

在这里插入图片描述

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

解法2:单指针

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

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 后面


http://www.kler.cn/a/593142.html

相关文章:

  • 【Docker入门】构建推送第一个Docker映像
  • 鸿蒙编译框架@ohos/hvigor FileUtil用法
  • 开发过程中的网络协议
  • LORA的AB矩阵是针对Transformer的多头还是MLP
  • 如何在 Vue.js 中优化大型列表的渲染
  • Python的openpyxl库读取excel文件(1)
  • 论文分享:PL-ALF框架实现无人机低纹理环境自主飞行
  • docker安装rabbitmq并配置hyperf使用
  • oracle创建磁盘组的时候,无法发现asm磁盘
  • Vue3 组件通信 v-model 封装组件 组件源码 v-model原理
  • Qt-D指针与Q指针的设计哲学
  • $set 方法废弃
  • HTTP核心知识
  • 以太网 MAC 帧格式
  • 如何在前端发版时实现向客户端推送版本更新消息
  • Flutter中Align的使用说明
  • 【论文阅读】MMed-RAG:让多模态大模型告别“事实性幻觉”​
  • docker pull 提示timeout
  • 在线 SQL 转 Python ORM工具
  • 【从零开始学习计算机科学】算法分析(二)排序算法 与 分治法