leetcode-75-颜色分类

题目描述:

方法一:

class Solution:
    def sortColors(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        p0 = curr = 0 # 对于所有 idx > p2 : nums[idx > p2] = 2 
        p2 = len(nums) - 1 
        while curr <= p2: 
            if nums[curr] == 0: 
                nums[p0], nums[curr] = nums[curr], nums[p0] 
                p0 += 1 
                curr += 1 
            elif nums[curr] == 2: 
                nums[curr], nums[p2] = nums[p2], nums[curr] 
                p2 -= 1 
            else: curr += 1

 优化:

class Solution:
    def sortColors(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        i,j = 0,len(nums)-1
        k = 0
        while k <= j:  
            while nums[k] == 2 and j > k:
                nums[k],nums[j] = nums[j],nums[k]
                j -= 1
            while nums[k] == 0 and k > i:
                nums[k],nums[i] = nums[i],nums[k]
                i += 1
            k += 1

 

posted @ 2019-07-13 10:34  oldby  阅读(164)  评论(0编辑  收藏  举报