力扣 题目75- 颜色分类

题目

题解

1.移动法(推荐)

在该方法中我们只需要记录一下白色开头值即可 如果为0则移动到开头 如果为1则移动到白色开头值 2会被推到最后

2,0,2,1,1,0->0,2,2,1,1,0->0,1,2,2,1,0->0,1,1,2,2,0->0,0,1,1,2,2

2.交换法

需要记录 白色的开头与蓝色的开头

当为0时  白色的开头需要与蓝色的开头交换 然后i再与白色的开头交换 如果i这里蓝色的开头则直接交换

当为1时  白色的开头与i交换

2,0,2,1,1,0->0,2,2,1,1,0->0,1,2,2,1,0->0,1,1,2,2,0->0,0,1,,12,2

代码

1.

 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 class Solution {
 5 public:
 6     void sortColors(vector<int>& nums) {
 7         int white=0;
 8         for (int i = 0; i < nums.size(); i++) {
 9             if (nums[i] == 0) {
10                 nums.insert(nums.begin(), 1,nums[i]);
11                 nums.erase(nums.begin() + i+1);
12                 white += 1;
13             }
14             else if(nums[i] == 1)
15             {
16                 nums.insert(nums.begin()+ white,1, nums[i]);
17                 nums.erase(nums.begin() + i + 1);
18             }
19         }
20     }
21 };
22 
23 int main() {
24     Solution sol;
25     vector<int> nums = { 0 };
26     sol.sortColors(nums);
27     for (int i = 0; i < nums.size(); i++) {
28         cout << nums[i] << endl;
29     }
30 }
View Code

2.

 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 class Solution {
 5 public:
 6     void sortColors(vector<int>& nums) {
 7         int red = 0;
 8         int white = 0;
 9         for (int i = 0; i < nums.size(); i++) {
10             if (nums[i] == 0) {
11                 if (i != white) {
12                     swap(nums[red], nums[white]);
13                 }
14                 swap(nums[red], nums[i]);
15                 red += 1;
16                 white += 1;
17             }
18             else if (nums[i] == 1)
19             {
20                 swap(nums[white], nums[i]);
21                 white += 1;
22             }
23         }
24     }
25 };
26 
27 int main() {
28     Solution sol;
29     vector<int> nums = { 0 };
30     sol.sortColors(nums);
31     for (int i = 0; i < nums.size(); i++) {
32         cout << nums[i] << endl;
33     }
34 }
View Code

 

posted @ 2022-06-27 18:45  无聊的阿库娅  阅读(25)  评论(0编辑  收藏  举报