当出现2时,其他都不受影响。 1classSolution {2public:3voidsortColors(intA[],intn) {4intone =0, two =0, zero =0;56for(inti =0; i < n; ++i) {7if(A[i] ==2) {8A[two++] =2;9}elseif(A[i] ==1) {10A[two++] =2;11A[one++] =1;12}else{13A[two++] =2;14A[one++] ...
以及本题的后续:Lintcode: Sort Colors II 解题报告 GitHub: https://github.com/yuzhangcmu/LeetCode_algorithm/blob/master/sort/SortColors.java
是0。置于首位,是2置于末尾,中间置为1. 代码例如以下: publicclassSolution{publicvoidsortColors(int[]nums){int[]a=newint[nums.length];a=Arrays.copyOf(nums,nums.length);inti=0;intj=nums.length-1;for(intk=0;k<nums.length;k++){if(a[k]==0){nums[i++]=a[k];}elseif(a[k]==2){nu...
参考代码 packageleetcodefuncsortColors(nums[]int){zero,one:=0,0fori,n:=rangenums{nums[i]=2ifn<=1{nums[one]=1one++}ifn==0{nums[zero]=0zero++}}} 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
LeetCode 0075. Sort Colors颜色分类【Medium】【Python】【荷兰旗】 Problem LeetCode Given an array with n objects colored red, white or blue, sort themin-placeso that objects of the same color are adjacent, with the colors in the order red, white and blue. ...
Leetcode 75 Sort Colors Given an array withnobjects colored red, white or blue, sort themin-placeso that objects of the same color are adjacent, with the colors in the order red, white and blue. Here, we will use the integers 0, 1, and 2 to represent the color red, white, and ...
Sort Colors 2. Solution Two-pass class Solution{public:voidsortColors(vector<int>&nums){intleft=0;intright=nums.size()-1;intred=0;intwhite=0;intblue=0;for(inti=0;i<nums.size();i++){if(nums[i]==0){red++;}elseif(nums[i]==1){white++;}else{blue++;}}for(inti=0;i<red;i+...
75. 颜色分类 - 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地 [https://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95] 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色
75. 颜色分类 - 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地 [https://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95] 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色
void sortColors(vector<int>& nums) { if(nums.empty()) return; int zero = -1; //[0,zero]元素为1 int two = nums.size(); //[two,nums.size() - 1]元素为2 for(int i = 0; i < two; ) { if(nums[i] == 1) ++i;