Skip to content

Commit 280f0f8

Browse files
committed
solve problem Sort Colors
1 parent 8265fcb commit 280f0f8

File tree

5 files changed

+66
-0
lines changed

5 files changed

+66
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,7 @@ All solutions will be accepted!
293293
|74|[Search A 2d Matrix](https://leetcode-cn.com/problems/search-a-2d-matrix/description/)|[java/py/js](./algorithms/SearchA2dMatrix)|Medium|
294294
|153|[Find Minimum In Rotated Sorted Array](https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/description/)|[java/py/js](./algorithms/FindMinimumInRotatedSortedArray)|Medium|
295295
|34|[Find First And Last Position Of Element In Sorted Array](https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/description/)|[java/py/js](./algorithms/FindFirstAndLastPositionOfElementInSortedArray)|Medium|
296+
|75|[Sort Colors](https://leetcode-cn.com/problems/sort-colors/description/)|[java/py/js](./algorithms/SortColors)|Medium|
296297

297298
# Database
298299
|#|Title|Solution|Difficulty|

algorithms/SortColors/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Sort Colors
2+
We can solve this problem by double pointers

algorithms/SortColors/Solution.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public void sortColors(int[] nums) {
3+
int start = 0,
4+
end = nums.length - 1,
5+
cur = 0;
6+
7+
while (cur <= end) {
8+
if (nums[cur] == 0 && cur != start) {
9+
nums[start] = nums[start] + nums[cur];
10+
nums[cur] = nums[start] - nums[cur];
11+
nums[start++] -= nums[cur];
12+
} else if (nums[cur] == 2 && cur != end) {
13+
nums[end] = nums[end] + nums[cur];
14+
nums[cur] = nums[end] - nums[cur];
15+
nums[end--] -= nums[cur];
16+
} else
17+
cur++;
18+
}
19+
}
20+
}

algorithms/SortColors/solution.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {void} Do not return anything, modify nums in-place instead.
4+
*/
5+
var sortColors = function(nums) {
6+
let start = 0,
7+
end = nums.length - 1,
8+
cur = 0
9+
10+
while (cur <= end) {
11+
if (nums[cur] == 0 && cur != start) {
12+
nums[start] = nums[start] + nums[cur]
13+
nums[cur] = nums[start] - nums[cur]
14+
nums[start++] -= nums[cur]
15+
} else if (nums[cur] == 2 && cur != end) {
16+
nums[end] = nums[end] + nums[cur]
17+
nums[cur] = nums[end] - nums[cur]
18+
nums[end--] -= nums[cur]
19+
} else
20+
cur++
21+
}
22+
};

algorithms/SortColors/solution.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution(object):
2+
def sortColors(self, nums):
3+
"""
4+
:type nums: List[int]
5+
:rtype: void Do not return anything, modify nums in-place instead.
6+
"""
7+
start = 0
8+
end = len(nums) - 1
9+
cur = 0
10+
11+
while cur <= end:
12+
if nums[cur] == 0 and cur != start:
13+
nums[start], nums[cur] = nums[cur], nums[start]
14+
start += 1
15+
elif nums[cur] == 2 and cur != end:
16+
nums[end], nums[cur] = nums[cur], nums[end]
17+
end -= 1
18+
else:
19+
cur += 1
20+
21+

0 commit comments

Comments
 (0)