未验证 提交 655c80a2 编写于 作者: K Keqi Huang 提交者: GitHub

Update 075._sort_colors.md

上级 b280957e
......@@ -31,7 +31,7 @@ Could you come up with a one-pass algorithm using only constant space?
> 思路 1
先算一下0, 1, 2分别有多少个,然后in-place改呗,简单
先算一下0, 1, 2分别有多少个,然后in-place改呗,简单, beats 100%
```python
class Solution(object):
......@@ -95,3 +95,55 @@ class Solution(object):
end -= 1
```
> 思路 3
两个指针也可以
```python
class Solution(object):
def sortColors(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
i, l, r = 0, 0, len(nums) - 1
while i < len(nums):
if nums[i] == 2 and i < r:
nums[i], nums[r] = nums[r], 2
r -= 1
elif nums[i] == 0 and i > l:
nums[i], nums[l] = nums[l], 0
l += 1
else:
i += 1
```
> 思路 4
这个方法就很巧妙了,我们遍历整个数组,只要碰到了什么数字我们就把这个数字往右边推一下
大家可以用例子[2,0,2,1,1,0]自己推导一下过程,看看是不是有一种向右推的感觉
```python
class Solution(object):
def sortColors(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
n0, n1, n2 = -1, -1, -1
for i in range(len(nums)):
if nums[i] == 0:
n0, n1, n2 = n0+1, n1+1, n2+1
nums[n2] = 2
nums[n1] = 1
nums[n0] = 0
elif nums[i] == 1:
n1, n2 = n1+1, n2+1
nums[n2] = 2
nums[n1] = 1
else:
n2 += 1
nums[n2] = 2
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册