leetcode-sort-colors

题目描述

Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue.

Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.

Note:
You are not suppose to use the library's sort function for this problem.

click to show follow up.

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 an one-pass algorithm using only constant space?

算法的思想有点类似快速排序中的元素交换,不过这个算法更有意思。题目中我们只需要对三种元素进行处理,所以只设置了两个指针,左边的指针和右边的指针。

0表示左边的元素,1表示中间的,2表示右边的。

代码如下:

class Solution {
public:void sortColors(int A[], int n) {int left = 0;int right = n-1;for(int i=0;i<= right;i++){if(A[i]==2){swap(A[i],A[right]);right --;i --;}else if(A[i]==0){swap(A[i],A[left]);left ++;}}}
};


算法思想如下:

如果当前的元素是2,那么就和right指针进行交换,由于最后的那个位置已经确定了,那么我们迭代的次数就可以减少一次,因此for循环中写的是i<=right,

如果当前的原始是0,就和left指针进行交换,由于交换后的A[i]的元素如果不是本身的话就只能是1,就不用对i进行修改。

这里注意程序中第二个if用到的是else if,因为第一个if语句中我们可能对A[i]修改,两个if语句中只能执行一个。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 上已经安装libxml2还提示需要reinstall的解决方法

最近在ubuntu上配置环境&#xff0c;遇到一些奇怪的问题&#xff0c;已经安装了libxml2了&#xff0c;运行 apt-get install libxml2提示已经是最新版本了&#xff0c;可以在安装软件的时候还是提示没有libxml2&#xff0c;经过多方查询是缺少libxml2-dev包&#xff0c;其他的遇…

leetcode-search-in-rotated-sorted-array

转载自&#xff1a;http://www.acmerblog.com/leetcode-solution-search-in-rotated-sorted-array-ii-6210.html 题目描述 Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e.,0 1 2 4 5 6 7might become4 5 6 7 0 1 2). You are given a targ…

云计算与边缘计算协同发展的一些思考

来源&#xff1a;云计算开源产业联盟摘要&#xff1a;从边缘计算诞生开始&#xff0c;就一直有声音说边缘计算是云计算的“终结者”。但经过时间的验证&#xff0c;云计算和边缘计算的关系更加清晰&#xff1a;由于边缘计算解决了在边缘资源中云计算应用的应用问题&#xff0c;…

Ubuntu安装Gems报错的解决办法

安装执行&#xff1a; sudo -u git -H bundle install --deployment --without development test postgres安装的时候出现了两个问题 第一个报错&#xff1a; Fetching source index from https://rubygems.org/ Could not find modernizr-2.6.2 in any of the sources最终成功…

python 文件和目录 当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。

廖雪峰python教程中的<操作文件和目录>下的第二题目的解答&#xff0c; 网址为&#xff1a; http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431925324119bac1bc7979664b4fa9843c0e5fcdcf1e000 编写一个程序&#xff0c;能在…

腾讯和头条,构建类脑神经元网络的两条路线之争

作者&#xff1a;计算机博士&#xff0c;《互联网进化论》作者刘锋前言&#xff1a;在中国的社交网络领域&#xff0c;今日头条&#xff08;抖音&#xff09;等异军突起&#xff0c;对腾讯的优势地位产生了挑战&#xff0c;在这篇文章中用互联网大脑模型&#xff0c;分析了腾讯…

5G年终盘点:2018,意难平

来源&#xff1a;C114中国通信网2018&#xff0c;对于5G来说是动荡的一年。2017年底&#xff0c;在国际电信标准组织3GPP RAN第78次全体会议上&#xff0c;5G NR首发版本正式发布&#xff0c;这是全球第一个可商用部署的5G标准。5G自此走近大众视野&#xff0c;开始被频繁地提起…

C语言中#define中的一些特殊用法

转载自&#xff1a;http://blog.sina.com.cn/s/blog_4a4365030100edq7.html define是C语言中的预处理命令&#xff0c;它用于宏定义&#xff0c;可以提高源代码的可读性&#xff0c;为编程提供方便。 预处理命令以“#”号开头&#xff0c;如包含命令#include&#xff0c;宏定…

BEGINNING SHAREPOINT#174; 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 站点设置

BEGINNING SHAREPOINT 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 站点设置 你应该熟悉&#xff08;假设还咩有&#xff09;的SharePoint主要部分之中的一个是站点设置。你可用点击右手角落的齿轮图标&#xff0c;点击站点设置来訪问站点设置。在此页面你会发现大部…

一文读懂柔性电子传感器

来源&#xff1a;传感器技术目前&#xff0c;许多智能化的检测设备已经大量地采用了各种各样的传感器&#xff0c;其应用早已渗透到诸如工业生产、海洋探测 、环境保护 、医学诊断 、生物工程 、宇宙 开发 、智能家居等方方面面。 随着信息时代的应用需求越来越高&#xff0c;对…

《金狐系统维护盘》六周年纪念版UD/ISO +PE维护

本版的定位是“重维护&#xff0c;求兼容”&#xff0c;包含Windows 2003 PE维护版和Windows 8 PE X64维护版及功能相当强大的DOS工具MaxDOS9.3增强版&#xff0c;不带三卡驱动&#xff0c;体积小巧&#xff08;370mb&#xff09;&#xff0c;从茫茫网海里精心挑选50几款精品维…

C++模版类的简单使用

声明转载自&#xff1a;http://blog.csdn.net/hackbuteer1/article/details/6735704 1、模板的概念 我们已经学过重载(Overloading)&#xff0c;对重载函数而言,C的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如&#xff0c;为求两个数的最大值&…

智慧城市领域又出最新报告——智慧交通将迎来大爆发

来源&#xff1a;雷锋网近日&#xff0c;智慧城市领域又出了一份新的重磅报告——来自全球第二大市场研究机构MarketsandMarkets。综合整体报告来看&#xff0c;其中的几个观点&#xff0c;对于国内智慧城市产业非常有借鉴意义。预测的增长数据报告称&#xff0c;2018年全球智慧…

浮动div居中定位

当图片不能设为背景的时候&#xff0c;图片上需要配文字&#xff0c;文字div就需要设成浮动层position:absolute&#xff1b; 但是这时&#xff0c;这个浮动div无法显示在img中间位置&#xff0c;不同分辨率的移动设备会显示位置错乱 这时可以将浮动div设成相对body的定位&…

回顾2018,正在改变未来游戏规则的技术

来源&#xff1a;资本实验室回顾2018年&#xff0c;基于数字化的新技术继续推动着各行的的变革。人工智能、基因技术、物联网、3D打印、区块链……这些技术的应用在改变传统行业游戏规则的同时&#xff0c;给我们提供了关于未来技术应用的想象空间。当然&#xff0c;在看到美好…

jQuery之防止【冒泡事件】,阻止默认行为 【return false】 event.stopPropagation event.preventDefault...

知识点&#xff1a; event.stopPropagation() 阻止冒泡 event.preventDefault() 阻止默认事件&#xff0c;比如button提交后跳转到链接页面 两者都可以用 return false 代替。 冒泡事件就是点击子节点&#xff0c;会向上触发父节点&#xff0c;祖先节点的点击事件。 下面是h…

C++中operator的两种用法

首先声明&#xff0c;转载自&#xff1a;http://blog.csdn.net/skdkjzz/article/details/45872801 转换函数的名称是类型转换的目标类型&#xff0c;因此&#xff0c;不必再为它指定返回值类型&#xff1b;转换函数是被用于本类型的数值或变量转换为其他的类型&#xff0c;也不…

2018年世界科技发展回顾

来源&#xff1a;科技日报摘要&#xff1a;本文从科技政策、基础研究、信息技术、人工智能与先进制造、空间技术、能源环保等六个领域&#xff0c;回顾了2018年世界主要国家的科技发展。2019年或许会很不平常&#xff0c;只因2018年世界主要国家之间关系风云变幻&#xff0c;让…

给destoon商城的列表中和首页添加购物车功能

如何给destoon商城的列表中和首页添加购物车功能&#xff1f; 目前加入购物车的功能只存在商城的详细页面里&#xff0c;有时候我们需要批量购买的时候&#xff0c;希望在列表页就能够使用这个加入购物车的功能。 修改步骤见下&#xff1a; 例如在商城频道的首页和列表页加这个…

leetcode N-Queens

转载自&#xff1a;http://www.cnblogs.com/TenosDoIt/p/3801621.html N-Queens The n -queens puzzle is the problem of placing n queens on an n n chessboard such that no two queens attack each other. Given an integer n , return all distinct solutions to the …