标签: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 }
方法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 }
类似问题
215 Kth Largest Element in an Array
标签:show 利用 event rtc 遍历 click http 问题 模拟
原文地址:https://www.cnblogs.com/cxc1357/p/12501708.html