返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++怎么实现颜色排序
  • 161
分享到

C++怎么实现颜色排序

2023-06-19 13:06:55 161人浏览 薄情痞子
摘要

这篇文章主要介绍了c++怎么实现颜色排序的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++怎么实现颜色排序文章都会有所收获,下面我们一起来看看吧。颜色排序Example:Input: [2,0,2,1,1,0

这篇文章主要介绍了c++怎么实现颜色排序的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++怎么实现颜色排序文章都会有所收获,下面我们一起来看看吧。

颜色排序

Example:

Input: [2,0,2,1,1,0]
Output: [0,0,1,1,2,2]

Follow up:

  • A rather straight forward solution is a two-pass alGorithm using counting sort.
    First, iterate the array counting number of 0"s, 1"s, and 2"s, then overwrite array with total number of 0"s, then 1"s and followed by 2"s.

  • Could you come up with a one-pass algorithm using only constant space?

这道题的本质还是一道排序的题,题目中给出提示说可以用计数排序,需要遍历数组两遍,那么先来看这种方法,因为数组中只有三个不同的元素,所以实现起来很容易。

- 首先遍历一遍原数组,分别记录 0,1,2 的个数。
- 然后更新原数组,按个数分别赋上 0,1,2。

解法一:

class Solution {public:    void sortColors(vector<int>& nums) {        vector<int> colors(3);        for (int num : nums) ++colors[num];        for (int i = 0, cur = 0; i < 3; ++i) {            for (int j = 0; j < colors[i]; ++j) {                nums[cur++] = i;            }        }    }};

题目中还要让只遍历一次数组来求解,那么就需要用双指针来做,分别从原数组的首尾往中心移动。

- 定义 red 指针指向开头位置,blue 指针指向末尾位置。

- 从头开始遍历原数组,如果遇到0,则交换该值和 red 指针指向的值,并将 red 指针后移一位。若遇到2,则交换该值和 blue 指针指向的值,并将 blue 指针前移一位。若遇到1,则继续遍历。

解法二:

class Solution {public:    void sortColors(vector<int>& nums) {        int red = 0, blue = (int)nums.size() - 1;        for (int i = 0; i <= blue; ++i) {            if (nums[i] == 0) {                swap(nums[i], nums[red++]);            } else if (nums[i] == 2) {                swap(nums[i--], nums[blue--]);            }         }    }};

当然我们也可以使用 while 循环的方式来写,那么就需要一个变量 cur 来记录当前遍历到的位置,参见代码如下:

解法三:

class Solution {public:    void sortColors(vector<int>& nums) {        int left = 0, right = (int)nums.size() - 1, cur = 0;        while (cur <= right) {            if (nums[cur] == 0) {                swap(nums[cur++], nums[left++]);            } else if (nums[cur] == 2) {                swap(nums[cur], nums[right--]);            } else {                ++cur;            }        }    }};

关于“C++怎么实现颜色排序”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C++怎么实现颜色排序”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网其他教程频道。

--结束END--

本文标题: C++怎么实现颜色排序

本文链接: https://lsjlt.com/news/296229.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++怎么实现颜色排序
    这篇文章主要介绍了C++怎么实现颜色排序的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++怎么实现颜色排序文章都会有所收获,下面我们一起来看看吧。颜色排序Example:Input: [2,0,2,1,1,0...
    99+
    2023-06-19
  • C++实现LeetCode(75.颜色排序)
    [LeetCode] 75. Sort Colors 颜色排序 Given an array with n objects colored red, white ...
    99+
    2024-04-02
  • C++中怎么使用cvtColor实现颜色转换
    这篇文章主要讲解了“C++中怎么使用cvtColor实现颜色转换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中怎么使用cvtColor实现颜色转换”吧!前言在我们读取图像时通常会用到...
    99+
    2023-06-30
  • C++怎么实现链表排序
    本篇内容主要讲解“C++怎么实现链表排序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么实现链表排序”吧!链表排序Sort a linked list in O(n ...
    99+
    2023-06-20
  • c语言排序怎么实现
    c 语言中实现排序可以使用多种算法,包括:冒泡排序:比较相邻元素,将较小的元素向前移动。选择排序:找到无序序列中的最小元素,并与第一个元素交换位置。插入排序:将元素逐个插入到已有序序列中...
    99+
    2024-05-15
    c语言 排列 冒泡排序
  • 怎么用css实现颜色扇
    本篇内容主要讲解“怎么用css实现颜色扇”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用css实现颜色扇”吧! 今天我们实现一...
    99+
    2024-04-02
  • C# wpf简单颜色板的实现
    目录前言一、如何实现?1、使用ObjectDataProvider2、定义转换器3、绑定容器二、使用示例1.代码2.显示效果前言 wpf本身没有提供颜色板之类的控件,有些业务使用场...
    99+
    2024-04-02
  • CSS怎么实现文字颜色不变下划线变颜色
    本篇内容介绍了“CSS怎么实现文字颜色不变下划线变颜色”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、使...
    99+
    2024-04-02
  • C#中怎么实现快速排序
    本篇文章为大家展示了C#中怎么实现快速排序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C#快速排序不好实现?前一段时间有朋友问我,以下这段Haskell快速排序的代码,是否可以转化成C#中等价的L...
    99+
    2023-06-17
  • 使用c#怎么实现一个颜色选择控件
    使用c#怎么实现一个颜色选择控件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。代码://颜色拾取框using System;using System.Com...
    99+
    2023-06-14
  • C#怎么实现TrackBar拖动条改变滑块颜色
    本篇内容主要讲解“C#怎么实现TrackBar拖动条改变滑块颜色”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#怎么实现TrackBar拖动条改变滑块颜色”吧!原理TrackBar拖动条的滑块...
    99+
    2023-06-29
  • 怎么用vbs实现选择颜色
    这篇文章主要介绍“怎么用vbs实现选择颜色”,在日常操作中,相信很多人在怎么用vbs实现选择颜色问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用vbs实现选择颜色”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-08
  • PyQt5怎么实现颜色对话框
    这篇文章主要介绍了PyQt5怎么实现颜色对话框的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PyQt5怎么实现颜色对话框文章都会有所收获,下面我们一起来看看吧。颜色对话框通过颜色对话框(QColorDialog...
    99+
    2023-07-05
  • C#中怎么利用排序函数实现冒泡排序
    今天就跟大家聊聊有关C#中怎么利用排序函数实现冒泡排序,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。所谓冒泡排序就是在每一次排序的过程中总有一个***的值被移动到后面,值小的就像水泡...
    99+
    2023-06-17
  • C#怎么实现冒泡排序和插入排序算法
    这篇文章主要讲解了“C#怎么实现冒泡排序和插入排序算法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么实现冒泡排序和插入排序算法”吧!1.选择排序(冒泡排序)升序用第一个元素跟其他元素...
    99+
    2023-06-30
  • C++怎么实现链表插入排序
    本篇内容主要讲解“C++怎么实现链表插入排序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么实现链表插入排序”吧!链表插入排序链表的插入排序实现原理很简单,就是一个元素一个元素的从原链表...
    99+
    2023-06-20
  • C++归并排序算法怎么实现
    这篇文章主要介绍“C++归并排序算法怎么实现”,在日常操作中,相信很多人在C++归并排序算法怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++归并排序算法怎么实现”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-26
  • c语言冒泡排序怎么实现
    C语言冒泡排序的实现步骤如下:1. 定义一个数组来存储待排序的元素。2. 使用两层循环来比较相邻两个元素的大小,并进行交换。3. 外...
    99+
    2023-08-25
    c语言
  • python实现颜色空间转换程序(Tkinter)
    本文主要基于colorsys实现,样例是从hls转换到rgb,如果要换颜色空间很容易只需要修改一个函数,具体内容如下 用到了Scale和Canvas组件。 运行效果图: 代码如下: from Tki...
    99+
    2022-06-04
    转换程序 颜色 空间
  • php怎么实现表格两种颜色
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php怎么实现表格两种颜色?【PHP】简单的隔行颜色区分表格的实现<html> <head> <title>Creating tabl...
    99+
    2020-10-10
    php 表格
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作