首页 > 其他 > 详细

[刷题] LeetCode 75 Sort Colors

时间:2020-03-16 10:03:41      阅读:55      评论:0      收藏:0      [点我收藏+]

要求

给只有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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!