共计 554 个字符,预计需要花费 2 分钟才能阅读完成。
题目形容
给定一个蕴含红色、红色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得雷同色彩的元素相邻,并依照红色、红色、蓝色顺序排列。
此题中,咱们应用整数 0、1 和 2 别离示意红色、红色和蓝色。
留神:
不能应用代码库中的排序函数来解决这道题。
示例:
输出: [2,0,2,1,1,0]
输入: [0,0,1,1,2,2]
崩溃思路
办法一:
应用统计排序,先遍历一遍,将所有 0,1,2 的个数统计进去,而后再用循环重写数组
办法二:
应用游标,应用两个变量存储首尾两个地位:值为 2:将值和尾部的数值调换,同时将尾部变量前移一位(-1),游标不动,对换过来的数据还须要进行判断;值为 0:将值和手部的数值调换,同时将首部的变量值后移一位(+1),游标后移一位;值为 1:游标后移一位;终止条件:游标和尾部变量重合,(<=)
### 语言积攒
对数值的替换(swap),应用对象的属性绑定后能力替换胜利,间接替换援用,是没有成果的
### vscode 代码链接
https://github.com/lunaDolphin/leetcode/tree/master/queue_sortColors_75
https://github.com/lunaDolphin/leetcode/tree/master/queue_sortColors_75_1
正文完