时间轴

2026-03-17

init


题目:

双指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <vector>
using std::vector;

class Solution {
public:
void sortColors(vector<int> &nums)
{
// n == nums.length
// 1 <= n <= 300
// nums[i] 为 0、1 或 2
int n = nums.size();
int red = 0, blue = n - 1;
int i = 1;

while (red < blue && i <= blue) {
if (nums[i] == 0) {
if (i != red)
std::swap(nums[i], nums[red]);
else
i++;

red++;
} else if (nums[i] == 2) {
if (i != blue)
std::swap(nums[i], nums[blue]);
else
i++;

blue--;
} else {
i++;
}
}
}
};

int main()
{
vector<int> nums = { 2, 0, 2, 1, 1, 0 };
Solution S;
S.sortColors(nums);
}