题解 | #牛的品种排序II#
牛的品种排序II
https://www.nowcoder.com/practice/43e49fbb98b4497ba46e185918188b1c
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param cows int整型vector * @return int整型vector */ vector<int> sortCows(vector<int>& cows) { // write code here int low = 0; int high = cows.size() - 1; int i = 0; while (i <= high) { if (cows[i] == 0) { swap(cows[i], cows[low]); i++; low++; } else if (cows[i] == 2) { swap(cows[i], cows[high]); high--; } else { i++; } } return cows; } };
荷兰国旗问题:三指针,原地调整。
一个指针指向0的右端点(可以理解为最终其左全0右全1和2),一个指针指向2的左端点(可以理解为最终其右全2左全0和1),一个指针进行遍历。