题目链接
https://leetcode.com/problems/sort-colors/
解题思路
把0的往左边交换,把2的交换到右边
代码
class Solution {
public:
void sortColors(vector<int>& nums) {
//s从前往后指向第一个不是0的位置,e从后往前指向第一个不是2的位置
int s = 0, e = nums.size() - 1;
for (int i = s; i <= e;) {
if (nums[i] == 0) {
//0往左交换
if (i != s) {
swap(nums[i], nums[s]);
}
s++;
i++;
} else if (nums[i] == 2) {
//2往右交换
if (nums[e] != 2) {
swap(nums[i], nums[e]);
}
e--;
} else {
i++;
}
}
}
};
网友评论