码迷,mamicode.com
首页 > 其他好文 > 详细

[刷题] LeetCode 75 Sort Colors

时间:2020-03-16 09:52:30      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:show   利用   event   rtc   遍历   click   http   问题   模拟   

要求

给只有0、1、2三个元素的数组排序

思路

方法1:遍历数组,利用辅助数组保存三个元素的个数,再写入(遍历两遍)

方法2:模拟三路快排,遍历一遍完成排序

 

技术图片

实现

方法1

技术图片
 1 void sortColors(vector<int>& nums){
 2     int count[3] = {0};
 3     for( int i = 0 ; i < nums.size() ; i ++ ){
 4         assert( num[i] >= 0 && nums[i] <= 2 );
 5         count[nums[i]] ++;
 6     }
 7             
 8     int index = 0;
 9     for( int i = 0 ; i < count[0] ; i ++ ){
10         nums[index++] = 0;
11     for( int i = 0 ; i < count[1] ; i ++ ){
12         nums[index++] = 1;
13     for( int i = 0 ; i < count[2] ; i ++ ){
14         nums[index++] = 2;
15     }
16 }
View Code

方法2

技术图片
 1 void sortColors1(vector<int>& nums){
 2     int zero = -1;
 3     int two = nums.size();
 4     for( int i = 0 ; i < two ; ){
 5         if( nums[i] == 1 )
 6             i ++;
 7         else if( nums[i] == 2 ){
 8             two --;
 9             swap( nums[i] , nums[two] );    
10         }else{
11             assert( nums[i] == 0 );
12             zero ++;
13             swap( nums[zero] , nums[i] );
14             i ++;
15         }
16     }
17 }
View Code

类似问题

215 Kth Largest Element in an Array

[刷题] LeetCode 75 Sort Colors

标签:show   利用   event   rtc   遍历   click   http   问题   模拟   

原文地址:https://www.cnblogs.com/cxc1357/p/12501708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!