美文网首页排序算法
Leetcode75.颜色分类(中等--三指针法)

Leetcode75.颜色分类(中等--三指针法)

作者: 淌水希恩 | 来源:发表于2019-07-12 22:23 被阅读0次
题目描述:

给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。

注意:

不能使用代码库中的排序函数来解决这道题

示例:

输入: [2,0,2,1,1,0]
输出: [0,0,1,1,2,2]

进阶:

一个直观的解决方案是使用计数排序的两趟扫描算法。
首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。
你能想出一个仅使用常数空间的一趟扫描算法吗?

一直无法完全掌握三指针法的索引关系,在此记录。

class Solution(object):
    def sortColors(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        low, mid, hight = 0, 0, len(nums)-1
        while mid <= hight:
            if nums[mid] == 0:
                nums[low], nums[mid] = nums[mid], nums[low]
                low += 1
                mid += 1
            elif nums[mid] == 1:
                mid += 1
            else:
                nums[mid], nums[hight] = nums[hight], nums[mid]
                hight -= 1

相关文章

  • Leetcode75.颜色分类(中等--三指针法)

    题目描述: 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按...

  • Leetcode75. 颜色分类

    题目 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色...

  • leetcode75.颜色分类

    题目链接 题解:partition 本题就是著名的:Dutch National Flag Problem 即:荷...

  • 4.数组(四)

    https://leetcode-cn.com/tag/array/ 题目汇总75. 颜色分类中等78. 子集中等...

  • 避免这5点,你的眉毛上色率至少提高80%—冰洁绣苑

    1、针法垂直 进针没有垂直,不够垂直的针法,色料无法真正的渗透,进入皮肤,只是浮于表面,结痂之后,颜色会连同痂块一...

  • [刷题防痴呆]有没有人一起从零开始刷力扣8 - 双指针篇

    8 双指针法 题目分类题目编号头尾指针345、680、167、15、16、18、11、42

  • 颜色分类

    给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地**对它们进行排序,使得相同颜色的元素相邻,并按照红色、...

  • 颜色分类

    冷色:蓝,青,绿蓝 暖色:红,橙,黄。 中性色:绿,紫色。 消色:黑白灰,消色是不含颜色。 绿色和紫色,叫中性色,...

  • 颜色分类

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sort...

  • 颜色分类

    75. 颜色分类 Tips: 经典的荷兰三色国旗问题最简单的方法,做两趟扫描,先选定pivot = 1,第一趟下来...

网友评论

    本文标题:Leetcode75.颜色分类(中等--三指针法)

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