LeetCode刷题之HOT100之颜色分类

下午好呀,大家!昨天估计是喝了假酒,现在没有胃口,喝酒真的没有任何好处。以后尽量避免此活动。今天几乎没睡觉,准备做完这题回宿舍,把电脑也带回去。

1、题目描述

在这里插入图片描述

2、逻辑分析

对颜色排序,要求是原地排序。以下是我想出来的代码

 public void sortColors(int[] nums) {
        Arrays.sort(nums);
    }

哈哈哈啊,秒了嘿嘿
Anyway,怎么解决呢?官方给出了单指针、双指针等方法。下面先来看看单指针:

  • 对数组进行两次遍历。
  • 在第一次遍历中,我们将数组中所有的 0 交换到数组的头部。在第二次遍历中,我们将数组中所有的 1 交换到头部的 0
    之后。此时,所有的 2 都出现在数组的尾部,这样我们就完成了排序。

那就直接代码演示

3、代码演示

public void sortColors(int[] nums) {
       int n = nums.length;
       int p = 0;
       for(int i = 0; i < n; i++){
        if(nums[i] == 0){
            int temp  = nums[i];
            nums[i] = nums[p];
            nums[p] = temp;
            p++;
        }
       }
       for(int i = p; i < n; i++){
        if(nums[i] == 1){
            int temp = nums[i];
            nums[i] = nums[p];
            nums[p] = temp;
            p++;
        }
       }
     }

在这里就不必注释了,简单明了。
时间复杂度:O(n),空间复杂度:O(1)。
接下来看看双指针方法,算了,双指针也是乏善可陈,今天就先到这儿了,我得回去了。

相关推荐

  1. LeetCode笔记hot 100(一)

    2024-06-09 05:42:04       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-09 05:42:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-09 05:42:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-09 05:42:04       87 阅读
  4. Python语言-面向对象

    2024-06-09 05:42:04       96 阅读

热门阅读

  1. 自动驾驶人工智能

    2024-06-09 05:42:04       26 阅读
  2. 平滑值(pinghua)

    2024-06-09 05:42:04       25 阅读
  3. Ubuntu bash按Table不联想

    2024-06-09 05:42:04       30 阅读
  4. 素数幂变换问题

    2024-06-09 05:42:04       25 阅读
  5. html前端怎么赚钱:探索多元盈利途径

    2024-06-09 05:42:04       26 阅读
  6. 1、项目介绍:为什么要做此项目。

    2024-06-09 05:42:04       28 阅读
  7. ssh远程管理和密钥和yum源

    2024-06-09 05:42:04       27 阅读
  8. 动态规划学习

    2024-06-09 05:42:04       31 阅读
  9. 单片机毕业设计论文都些什么,章节规划

    2024-06-09 05:42:04       33 阅读
  10. leetcode-01-[704]二分查找[27]移除元素

    2024-06-09 05:42:04       38 阅读
  11. Leetcode:有效的括号

    2024-06-09 05:42:04       32 阅读