Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
awesome-algorithm
提交
655c80a2
A
awesome-algorithm
项目概览
OpenDocCN
/
awesome-algorithm
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
awesome-algorithm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
655c80a2
编写于
7月 30, 2018
作者:
K
Keqi Huang
提交者:
GitHub
7月 30, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update 075._sort_colors.md
上级
b280957e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
53 addition
and
1 deletion
+53
-1
docs/Leetcode_Solutions/075._sort_colors.md
docs/Leetcode_Solutions/075._sort_colors.md
+53
-1
未找到文件。
docs/Leetcode_Solutions/075._sort_colors.md
浏览文件 @
655c80a2
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录