题目地址:https://leetcode-cn.com/problems/sort-colors/

题目描述:

给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。

示例:

输入: [2,0,2,1,1,0]
输出: [0,0,1,1,2,2]

解题思路:

  因为三个颜色的球用0、1、2来标识,按输出0全部排在前面,2全部排在后面,初始化定义两个下标位置min=0,指向最前面的位置,max=nums.length-1,指向数组的最后一个下标。
  通过for循环遍历,如果是0就往前面移位,和min的下标互换,然后min+1,如果是2就往后移位,和max的下标位置互换,然后max-1,下一个2就要往前移,这时候互换位置之后,就需要判断换到当前遍历i的值是不是1了,如果不是1,就要回退i–,再遍历,如果是1就放到这个位置。

class Solution {public void sortColors(int[] nums) {int numLength = nums.length;int min = 0, max = numLength -1, temp;//如果数组只有0个或1个值,直接返回if(numLength <= 1){return;}//移动0和2,1不移动for(int i = 0; i <= max; ++i){//如果等于0就放前面if(nums[i] == 0){temp = nums[i];nums[i] = nums[min];nums[min] = temp;min++;}//等于2就往后面放,交换位置if(nums[i] == 2){temp = nums[i];nums[i] = nums[max];nums[max] = temp;max--;//判断交换后的当前i下标的值,只有等于1不移动,回退重新循环当前下标if(nums[i] != 1){--i;}}}//打印输出结果for (int i = 0; i < numLength; i++){System.out.print(nums[i] + " ");}}
}
public class ColorType_75 {public static void main(String[] args) {int nums[] = {2,0,2,1,1,0,1,2,0,2,2,1,2,1,0,2,1,2,1,0,2};Solution solution = new Solution();solution.sortColors(nums);}
}

运行结果:
  1 1 1 1 1 1 1 2 2 2 2 2 2 0 0 0 0 0 2 2 2

【LeetCode】75. 颜色分类,使得相同颜色的元素相邻相关推荐

  1. 《LeetCode力扣练习》第75题 颜色分类 Java

    <LeetCode力扣练习>第75题 颜色分类 Java 一.资源 题目: 给定一个包含红色.白色和蓝色.共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按 ...

  2. Leetcode算法Java全解答--75. 颜色分类

    Leetcode算法Java全解答–75. 颜色分类 文章目录 Leetcode算法Java全解答--75. 颜色分类 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 给定 ...

  3. LeetCode - 75 颜色分类

    给定一个包含红色.白色和蓝色.共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列.我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色. ...

  4. LeetCode 73矩阵置零74搜素二维矩阵75颜色分类

    新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打 ...

  5. 【leetcode】75.颜色分类(多种解法,超详细图文解析)

    75. 颜色分类 难度中等 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,**原地**对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 ...

  6. leetcode —— 75. 颜色分类

    给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色. ...

  7. leetcode菜狗入门 | 75. 颜色分类

    颜色分类 题目描述 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示 ...

  8. LeetCode 75. 颜色分类(Sort Colors)

    题目描述 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白色 ...

  9. Leetcode 75. 颜色分类 (每日一题 20210817)

    给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列.此题中,我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色.示例 ...

  10. leetcode 75. 颜色分类(双指针)

    给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色. ...

最新文章

  1. Spark 2.4重磅发布:优化深度学习框架集成,提供更灵活的流式接收器
  2. Zonbu-售价 99 美元的袖珍电脑
  3. python详细安装教程3.7.0-Python 3.7.0安装教程(附安装包) | 我爱分享网
  4. wap问答系统工作总结
  5. DLL 的导入与导出
  6. JSF 2.2: HTML5 Support
  7. s5pv210——串口通信的基础概念
  8. 在linux下运行qiime,科学网—QIIME2在Linux环境下使用遇到的问题 - 肖斌的博文
  9. NXP数学电机库PI控制器参数的理解
  10. idea 远程调试resin
  11. wifi发射功率各国标准_智能插座背后的两种无线协议——WiFi与ZigBee
  12. Android init.rc on property
  13. Bugzilla使用
  14. 虚拟服务器怎么选操作系统,虚拟主机怎样选择合适的操作系统
  15. Spring Boot Admin配置安全验证
  16. 用java计算输入工资计算税收_标准作业
  17. stc12c5a60s DHT11温湿度传感器
  18. 【XSY2271】青蛙(栈)
  19. 软件测试就业前景怎么样?
  20. 玩彩票赢钱概率有多少?用Python来告诉你

热门文章

  1. Linux常用软件包(常用命令)
  2. VirtualBox6.1安装及使用教程
  3. 计算机怎么清空d盘内容,电脑怎么样清理D盘。
  4. 【Firefox设置百度搜索引擎】
  5. 推荐Linux音乐播放器:咪咕音乐
  6. 2020计算机一级考试wps分数,计算机一级WPS辅导:在WPS下实现用域真正分数输入技巧...
  7. vue 日程表组件_VUE也有自己的日历组件
  8. ElasticJob汇总
  9. 如何进入大华智能分析服务器,如何配置大华录像机区域入侵功能,看完就明白...
  10. rpm命令卡主,无法执行