题解 | #牛的品种排序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),一个指针进行遍历。
查看7道真题和解析