美文网首页
LeetCode 75. 颜色分类

LeetCode 75. 颜色分类

作者: 草莓桃子酪酪 | 来源:发表于2022-08-25 00:32 被阅读0次
    题目

    给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库的sort函数的情况下解决这个问题。

    例:
    输入:nums = [2,0,2,1,1,0]
    输出:[0,0,1,1,2,2]

    方法:指针
    • index 表示两个数字位置交换的其中一个位置
    • 循环遍历数组 nums,将所有的红色(零)放到数组的前面
      • 若该下标对应的数字为零,那么将该数字与 index 下标对应的数字交换位置,并且 index 向后移一位
    • 循环遍历数组 nums,起始值为最后一个零的下一位,将所有白色(一)放到最后一个零后面
      • 若该下标对应的数字为一,那么将该数字与 index 下标对应的数字交换位置,并且 index 向后移一位
    class Solution(object):
        def sortColors(self, nums):
            index = 0
            for i in range(len(nums)):
                if nums[i] == 0:
                    nums[index], nums[i] = nums[i], nums[index]
                    index += 1
            for i in range(index, len(nums)):
                if nums[i] == 1:
                    nums[index], nums[i] = nums[i], nums[index]
                    index += 1
    
    参考

    代码相关:https://leetcode.cn/problems/sort-colors/solution/yan-se-fen-lei-by-leetcode-solution/

    相关文章

      网友评论

          本文标题:LeetCode 75. 颜色分类

          本文链接:https://www.haomeiwen.com/subject/zwyngrtx.html