NC212. 颜色分类
描述
示例1
输入:
[0,2,1]
输出:
[0,1,2]
示例2
输入:
[0,0,2,0]
输出:
[0,0,0,2]
C++ 解法, 执行用时: 2ms, 内存消耗: 412KB, 提交时间: 2021-11-20
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param colors int整型vector * @return int整型vector */ vector<int> sortColor(vector<int>& colors) { // write code here int fir = 0; for(int i = 0; i< 2;i++){ int end = colors.size()-1; while(end > fir){ while(colors[fir] == i) fir++; if(colors[end] == i && end > fir) { int a = colors[fir]; colors[fir] = colors[end]; colors[end] = a; //cout<< fir<<" "; } else end--; } } return colors; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 320KB, 提交时间: 2022-05-07
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param colors int整型vector * @return int整型vector */ vector<int> sortColor(vector<int>& colors) { // write code here int i = 1; int left = 0; int right = colors.size()-1; while(i<=right){ if(colors[i]==0){ swap(colors[i],colors[left]); left++; if(i == left) i++; }else if(colors[i] == 2){ swap(colors[i],colors[right]); right--; }else{ i++; } } return colors; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 384KB, 提交时间: 2022-05-10
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param colors int整型vector * @return int整型vector */ vector<int> sortColor(vector<int>& colors) { // write code here int zero = -1; int two = colors.size(); for (int i = 0; i < two;) { if (colors[i] == 0) { colors[i++] = colors[++zero]; colors[zero] = 0; } else if (colors[i] == 2) { colors[i] = colors[--two]; colors[two] = 2; } else { i++; } } return colors; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 384KB, 提交时间: 2022-01-17
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param colors int整型vector * @return int整型vector */ vector<int> sortColor(vector<int>& colors) { int i1=0,i2=0; for(auto i: colors) { if(i==0) i1++; if(i==1) i2++; } for(int i=0;i<colors.size();i++) { if(i<i1) colors[i]=0; if(i>=i1&&i<i1+i2) colors[i]=1; if(i>=i1+i2) colors[i]=2; } return colors; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 384KB, 提交时间: 2022-01-08
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param colors int整型vector * @return int整型vector */ vector<int> sortColor(vector<int>& colors) { // write code here int num0 = 0; int num1 = 0; int num2 = 0; vector<int> ans(colors.size()); for (auto& c : colors) { if (c == 0) { ans[num2++] = 2; ans[num1++] = 1; ans[num0++] = 0; } else if (c == 1) { ans[num2++] = 2; ans[num1++] = 1; } else { ans[num2++] = 2; } } return ans; } };