leetcode.array--75. Sort Colors
2017-10-28 20:31
423 查看
题目:75. Sort Colors
题目链接:https://leetcode.com/problems/sort-colors/description/
这个是比较经典的荷兰国旗问题了,用0,1,2分别代表red, white, and blue,要求遍历一遍完成排序,即将所有的0放在前面,1放在中间,2放在最后。去年考研时,王道上面也有这个题目。
设置指针begin=0和end=len(nums),以及当前扫描位置指针cur。有下面三种情况:
1.nums[cur]==0,此时说明该元素应该在数组的前一部分,故与nums[begin]交换。且交换之后begin之前的元素已经排好,因此begin++,cur++。
2.nums[cur]==1,说明当前元素应该处于数组的中部,cur++后不做处理。
3.nums[cur]==2,说明当前元素应该在数组的后部,故与nums[end]交换。交换后end--,cur不变(因为不确定交换到前面的元素是多少,可能会有疑问:为啥第一步就可以cur++?哈哈自己想去吧)。
Python:
class Solution(object):
def sortColors(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
begin,end=0,len(nums)-1
if begin==end:
return
cur=begin
while begin<=end and cur<=end:
if nums[cur]==1:
cur+=1
continue
elif nums[cur]==0:
nums[cur],nums[begin]=nums[begin],nums[cur]
cur+=1
begin+=1
continue
else:
nums[cur],nums[end]=nums[end],nums[cur]
end -= 1
continue
return
题目链接:https://leetcode.com/problems/sort-colors/description/
这个是比较经典的荷兰国旗问题了,用0,1,2分别代表red, white, and blue,要求遍历一遍完成排序,即将所有的0放在前面,1放在中间,2放在最后。去年考研时,王道上面也有这个题目。
设置指针begin=0和end=len(nums),以及当前扫描位置指针cur。有下面三种情况:
1.nums[cur]==0,此时说明该元素应该在数组的前一部分,故与nums[begin]交换。且交换之后begin之前的元素已经排好,因此begin++,cur++。
2.nums[cur]==1,说明当前元素应该处于数组的中部,cur++后不做处理。
3.nums[cur]==2,说明当前元素应该在数组的后部,故与nums[end]交换。交换后end--,cur不变(因为不确定交换到前面的元素是多少,可能会有疑问:为啥第一步就可以cur++?哈哈自己想去吧)。
Python:
class Solution(object):
def sortColors(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
begin,end=0,len(nums)-1
if begin==end:
return
cur=begin
while begin<=end and cur<=end:
if nums[cur]==1:
cur+=1
continue
elif nums[cur]==0:
nums[cur],nums[begin]=nums[begin],nums[cur]
cur+=1
begin+=1
continue
else:
nums[cur],nums[end]=nums[end],nums[cur]
end -= 1
continue
return
相关文章推荐
- 【LeetCode】【Array】【75】Sort Colors
- leetcode 75:Sort Colors
- [Leetcode] #75 Sort Colors
- [LeetCode] 75. Sort Colors
- LeetCode 75 --- Sort Colors
- Leetcode 75. Sort Colors
- leetcode 75. Sort Colors
- LeetCode-75. Sort Colors
- LeetCode - 75. Sort Colors
- leetcode_question_75 Sort Colors
- 75. Sort Colors (Array)
- LeetCode 75. Sort Colors
- LeetCode *** 75. Sort Colors
- leetcode-java-75. Sort Colors
- LeetCode 75 Sort Colors
- LeetCode||75. Sort Colors
- LeetCode 75. Sort Colors(排序颜色)
- 75. Sort Colors --- one-pass algorithm --- leetcode算法笔记
- LeetCode刷题【Array】 Sort Colors
- Leetcode 75 Sort Colors