75. 颜色分类

leetcode-75. 颜色分类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
void sortColors(vector<int>& nums) {
int m = 0; // 用于记录0出现的位置
int n = nums.size() - 1; // 用于记录2出现的位置
for (int i = 0; i <= n; i++) { // 遍历整个数组
while (i <= n && nums[i] == 2) { // 如果当前数字为2
swap(nums[i], nums[n]); // 将当前数字和最后一个数字进行交换
--n; // 更新最后一个数字的位置
}
if (nums[i] == 0) { // 如果当前数字为0
swap(nums[i], nums[m]); // 将当前数字和第一个数字进行交换
++m; // 更新第一个数字的位置
}
}
}
};