在这里,我们将使用0,1和2的整数分别表示红色,白色和蓝色。将所有的0,1,2元素进行排序
来源:互联网 发布:瑞中数据官网 编辑:程序博客网 时间:2024/06/02 00:32
给定一个n个对象颜色为红色,白色或蓝色的数组,对其进行排序,使相同颜色的对象相邻,颜色为红色,白色和蓝色。
在这里,我们将使用0,1和2的整数分别表示红色,白色和蓝色。
优化前的思路及代码:
class Solution { public void sortColors(int[] nums) { //时间复杂度:O(n)空间复杂度:O(1) int[] count = {0,0,0};//存放0,1,2三个元素的出现频率 for(int num : nums){ if(num >= 0 && num <= 2)//确保数组中元素的值都为0,1,2 count[num]++; else System.out.println("您输入的数组元素有误"); } int index = 0;//原来数组的下标,重新排序 int j = 0;//数组中的元素 while(j < count.length){ for(int i = 0;i<count[j];i++){ nums[index++] = j; } j++; } }}参考三路快排后的思路及代码:
class Solution { public void sortColors(int[] nums) { //时间复杂度:O(n)空间复杂度:O(1)[只遍历一遍完成题目的要求] int zero = -1; //nums[0...zero] == 0; int two = nums.length; //nums[two,n-1] == 2; for(int i = 0;i < two;){ if(nums[i]==1) { i++; }else if(nums[i] == 2) { //two--; int temp = nums[i]; nums[i] = nums[--two]; nums[two] = temp; }else { if(nums[i] == 0){ //zero++; int tmp = nums[++zero]; nums[zero] = nums[i]; nums[i] = tmp; i++; }else{ System.out.println("您输入的数组的数据有误!!!"); } } } }}
阅读全文
0 0
- 在这里,我们将使用0,1和2的整数分别表示红色,白色和蓝色。将所有的0,1,2元素进行排序
- 那些年我们刷过的算法题(排序)---有一个只由0,1,2三种元素构成的整数数组,请使用交换、原地排序而不是使用计数进行排序
- 分别写出有符号和无符号1字节,2字节,4字节所能表示的整数范围
- 红色性格和蓝色性格的优缺点
- 金币阵列问题。有m*n枚金币在桌面上排成一个金币阵列。每一个金币正面朝上,或背面朝上,分别用0和1表示。 金币阵列游戏的规则是:(1)每次可将任一行金币翻过来放在原来的位置上;(2)每
- 将一个浮点数的整数部分和小数部分分别输出显示,java显示(1H)
- 输入一串元素均不相等的自然数数列(以0结尾表示结束且0不是该数列的元素),分别求出所有的递增和递减子序列的总数目。如数列7,2,6,9,3,8,5,2,1可分为(7,2),(2,6,9),(9,8,3
- 数据结构_分别使用for循环和递归打印1-N的所有整数,比较运行时间
- 输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数, 使其和等于m ,要求将其中所有的可能..
- 以后所有的代码将在这里贴出链接
- 37 java java将一个浮点型数据的整数部分和小数部分分别输出
- 在这一章,我们将研究类和对象的概念。
- 红色和蓝色混淆
- jQuery easyui dataGrid 动态改变排序字段名,一般情况下,在使用的时候,我们会点击相应字段进行排序,这里以JAVA为例,后端的实体类字段有可能和数据库的字段不一致; 如:实体类中的
- 4.2.编程从键盘输入两个整数分别给变量a, b, 要求在不借助于其它变量的条件下将变量a和b的值实现交换。
- 将数组排序,数组中所有的负整数出现在正整数前面(时间复杂度为 O(n), 空间复杂度为 O(1)).
- 2 编写一个应用程序,用户分别从两个文本框输入学生的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。 程序运行效果如图:
- 对字符串数组进行排序,将所有变位词排在相邻的位置。
- C++设计模式系列
- 单个页面显示多个Ueditor编辑器方法
- Makefile学习笔记1
- C++风格_函数重载
- Python3之时间模块
- 在这里,我们将使用0,1和2的整数分别表示红色,白色和蓝色。将所有的0,1,2元素进行排序
- php curl实现多线程采集
- Leetcode-Array Partition I
- 机器学习(5)——贝叶斯学习(二)
- Android_GestureDetector手势滑动使用
- [noip2007]树网的核(链上乱搞)
- C++风格_缺省参数
- NASM与MASM的区别(不断更新中,参考NASM中文手册)
- 滚动条