首页 > 其他 > 详细

075 Sort Colors

时间:2015-07-19 14:50:52      阅读:140      评论:0      收藏:0      [点我收藏+]

075 Sort Colors

这道题最偷懒的方法当时是 counting sort. 但是显然这道题不是考这个, 而且那样需要扫描2便。 真正的解法是 one scan, 设置一头一尾 加上 Current一共三个指针进行 swap

class Solution:
    # @param {integer[]} nums
    # @return {void} Do not return anything, modify nums in-place instead.
    def sortColors(self, nums):
        start, end = 0, len(nums) - 1
        while start < len(nums) and nums[start] == 0:
            start += 1
        k = start
        while start < end:
            while end > start and nums[end] == 2:
                end -= 1
            while start < end and nums[start] == 0:
                start += 1
            if k > end:
                break
            if nums[k] == 2:
                nums[k], nums[end] = nums[end], nums[k]
                end -= 1
            elif nums[k] == 0:
                nums[k], nums[start] = nums[start], nums[k]
                start += 1
            else:
                k += 1

 

075 Sort Colors

原文:http://www.cnblogs.com/dapanshe/p/4658596.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!