首页 > 代码库 > Sort Colors
Sort Colors
这道题目有一个我觉得非常好的解法,即用三个变量i, j, k分别统计0出现次数,0,1出现次数,0,1,2出现次数,这样即可对A[]进行赋值。赋值顺序有讲究,即先赋2,再赋1,最后赋0,这样能够保证A[]对应位置填入正确的值。我觉得这种解法好的地方在于通用性强,因为对于有多于3个的数的这种排序,都能用类似办法很方便地进行解决,假如用普通的双指针来做,那将是特别麻烦的事情。下面贴上AC代码:
class Solution { public: void sortColors(int A[], int n) { if (A == NULL || n <= 1) return; int i = -1, j = -1, k = -1; for (int idx = 0; idx < n; idx++) { if (A[idx] == 0) { A[++k] = 2; A[++j] = 1; A[++i] = 0; } else if (A[idx] == 1) { A[++k] = 2; A[++j] = 1; } else { A[++k] = 2; } } } };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。