File tree Expand file tree Collapse file tree 1 file changed +68
-0
lines changed
animation-simulation/数据结构和算法 Expand file tree Collapse file tree 1 file changed +68
-0
lines changed Original file line number Diff line number Diff line change 7272
7373下面我们直接看代码吧,和三向切分基本一致。
7474
75+ Java Code:
76+
7577``` java
7678class Solution {
7779 public void sortColors (int [] nums ) {
@@ -99,6 +101,37 @@ class Solution {
99101}
100102```
101103
104+ C++ Code:
105+
106+ ``` c++
107+ class Solution {
108+ public:
109+ void sortColors(vector<int >& nums) {
110+ int len = nums.size();
111+ int left = 0;
112+ //这里和三向切分不完全一致
113+ int i = left;
114+ int right = len-1;
115+
116+ while (i <= right) {
117+ if (nums[ i] == 2) {
118+ swap(nums,i,right--);
119+ } else if (nums[ i] == 0) {
120+ swap(nums,i++,left++);
121+ } else {
122+ i++;
123+ }
124+ }
125+ }
126+
127+ void swap (vector<int>& nums, int i, int j) {
128+ int temp = nums[i];
129+ nums[i] = nums[j];
130+ nums[j] = temp;
131+ }
132+ };
133+ ```
134+
102135另外我们看这段代码,有什么问题呢?那就是我们即使完全符合时,仍会交换元素,这样会大大降低我们的效率。
103136
104137例如:[ 0,0,0,1,1,1,2,2,2]
@@ -117,6 +150,8 @@ class Solution {
117150
118151另一种代码表示
119152
153+ Java Code:
154+
120155``` java
121156class Solution {
122157 public void sortColors (int [] nums ) {
@@ -148,5 +183,38 @@ class Solution {
148183}
149184```
150185
186+ C++ Code:
187+
188+ ``` c++
189+ class Solution {
190+ public:
191+ void sortColors(vector<int >& nums) {
192+ int left = 0;
193+ int len = nums.size();
194+ int right = len - 1;
195+ for (int i = 0; i <= right; ++i) {
196+ if (nums[ i] == 0) {
197+ swap(nums,i,left);
198+ left++;
199+ }
200+ if (nums[ i] == 2) {
201+ swap(nums,i,right);
202+ right--;
203+ //如果不等于 1 则需要继续判断,所以不移动 i 指针,i--
204+ if (nums[ i] != 1) {
205+ i--;
206+ }
207+ }
208+ }
209+
210+ }
211+ void swap (vector<int >& nums, int i, int j) {
212+ int temp = nums[ i] ;
213+ nums[ i] = nums[ j] ;
214+ nums[ j] = temp;
215+ }
216+ };
217+ ```
218+
151219好啦,这个问题到这就结束啦,是不是很简单啊,我们明天见!
152220
You can’t perform that action at this time.
0 commit comments