首页 > 其他分享 >力扣71. 颜色分类

力扣71. 颜色分类

时间:2023-03-09 16:48:17浏览次数:55  
标签:蓝色 颜色 nums 分类 力扣 71 指针

颜色分类

题目

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

我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。

必须在不使用库内置的 sort 函数的情况下解决这个问题。

思路

利用指针的思想,现在是有0,1,2让他们进行排序。首先,用i指针来控制遍历的位置,k指针指向小于1的数,j指针指向大于1的数。这样就使得1左边的都是小于1的,1右边的都是大于1的。

def color_classification(nums):
    k, i, j = 0, 0, len(nums)-1
    while i <=j:
        if nums [i] < 1:
            nums[k], nums[i] = nums[i], nums[k]
            i = i+1
            k = k + 1
        elif nums[i] > 1:
            nums[j], nums[i] = nums[i], nums[j]
            j = j - 1
        else:
            i = i+1
    return nums

标签:蓝色,颜色,nums,分类,力扣,71,指针
From: https://www.cnblogs.com/lx173/p/17199006.html

相关文章

  • 力扣中542 01矩阵
    题解1:广度遍历是从0出发然后一步能到的设置为1遍历矩阵设为遍历过入队再看一步能到的设置为2 题解2:动态规划     改不对bug是因为没有设置已经遍历过......
  • CF1714E 1400
    题意解析由图得a中不能同时存在5的倍数和非5的倍数。若全为5的倍数,将她们的末尾全部操作为0,判断相等即可。若全非5的倍数,将她们的末尾全部操作为2。由于2......
  • VS error C2471: 无法更新程序数据库vc90.pdb的解决办法
    修改项目属性右击项目-->"属性”  1.“C/C++”-->"常规”-->”调试信息格式”设置为“C7兼容(/Z7)”  2.“C/C++”-->"代码生成”-->”启用字符串池......
  • 软件测试的分类方法
    1、按测试技术,软件测试可分为:黑盒测试、白盒测试、灰盒测试黑盒测试:在程序接口进行测试,它只是检查程序功能是否按照规格说明书的规定正常使用。也被称为功能测试或者数据......
  • 力扣---2379. 得到 K 个黑块的最少涂色次数
    给你一个长度为n下标从0开始的字符串blocks,blocks[i]要么是'W'要么是'B',表示第i块的颜色。字符'W'和'B'分别表示白色和黑色。给你一个整数k,表示想要连......
  • 力扣中116 填充每个节点的下一个右侧节点指针
    题解1:  也就是一下就把队列里所有的元素移除了移除的同时添加左右节点队列中每次放的都是一层 题解2:找到next可以利用next找下一节点用pre标记每层第一个tmp......
  • 信息系统分类
    1.CRM客户关系系统:市场与获客、线索跟进、客户画像、客户洽谈、销售分析、客户拜访、客户关怀、客户反馈、满意度调查2.SRM供应商管理系统:注册准入、考核评价、招投标、供......
  • 正则分类统计
    DimdAsObjectSubmain()Setd=CreateObject("scripting.dictionary")WithSheet1.Range("c1").CurrentRegion=""ar=.Range("a1").......
  • 力扣---64. 最小路径和
    给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例1:输入:grid=[[1,3,1......
  • 力扣简617 合并二叉树
    一遍过欸但是没捋清楚所以写了好半天不过运行速度很差我发现我只会广度优先这题深度憨简单   classSolution{publicTreeNodemergeTrees(TreeNoder......