zoukankan      html  css  js  c++  java
  • 边工作边刷题:70天一遍leetcode: day 24-3

    Sort Colors

    要点:维护左右边界的指针,从左边互换或者本来就在中间,都要接着找下一个。而从右边互换来,不变。

    • 这是因为,处理顺序是从左向右,所以右边的互换来的还没有处理而左边都是处理过的。
    • 这里一个错误点就是左边互换来的也不找下一个。这样的问题是如果左边和当前正好是同一个位置(这种情况只会在当前为0时),永远没法前进。而这种情况实际没发生互换并且都为0,可以同步推进。而其他情况也被包括进来因为换来的肯定是1,可以继续处理下一个
    class Solution(object):
        def sortColors(self, nums):
            """
            :type nums: List[int]
            :rtype: void Do not return anything, modify nums in-place instead.
            """
            left,right=0,len(nums)-1
            i = 0
            while i<=right:
                if nums[i]==0:
                    nums[left],nums[i]=nums[i],nums[left]
                    left+=1
                    i+=1
                elif nums[i]==1:
                    i+=1
                else:
                    nums[right],nums[i]=nums[i],nums[right]
                    right-=1
                    
                
    
  • 相关阅读:
    【Python】异常
    【Python】面向对象
    【Python】文件操作
    【Python】函数
    【Python】介绍以及环境搭建
    【Java】阿里巴巴开发规范手册
    【Java】NIO
    【Java】JUC
    【Git】国内的项目托管网站-码云
    【Git】在 Idea 中使用 Git
  • 原文地址:https://www.cnblogs.com/absolute/p/5678011.html
Copyright © 2011-2022 走看看