三指针(三指针排序只有三种元素的数组)--12--三指针--颜色分类
颜色分类
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
注意:
不能使用代码库中的排序函数来解决这道题。
示例:
输入: [2,0,2,1,1,0]
输出: [0,0,1,1,2,2]
题目来源:力扣(LeetCode)
题目链接:https://leetcode-cn.com/problems/sort-colors
分析
题目可通过快排、三指针,甚至可以通过遍历三种颜色种类数量再按照三种颜色的数量进行重新构建一个新数组的方法解题
但是现在我想为了针对三指针算法进行讲解,此题我用三指针进行解题
三指针顾名思义,三个标记位置的指针,分别是左指针,右指针,遍历指针。具体操作看代码简单粗暴
class Solution { public: void sortColors(vector<int>& nums) { if(nums.size() < 2) return; int left = 0,right = nums.size() - 1;//left是左指针,right是右指针 int zz = left;//zz是遍历指针 while(zz <= right){ if(nums[zz] == 0&&zz >= left){ swap(nums[zz],nums[left]); left++; } else if(nums[zz] == 2){ swap(nums[zz],nums[right]); right--; } else{ zz++; } } } };
相关推荐
csdnyasin 2020-06-28
yunfeitian 2020-05-08
jeonkc 2020-05-06
徐建岗网络管理 2020-05-03
xuguiyi00 2020-04-22
qingsongzdq 2020-04-20
shangs00 2020-04-15
风吹夏天 2020-06-08
hanjinixng00 2020-11-12
bearhoopIT之道 2020-11-11
拉斯厄尔高福 2020-10-19
dabian 2020-09-07
Web前端成长之路 2020-07-07
徐建岗网络管理 2020-06-26
penkgao 2020-06-25
fengjing81 2020-06-24
penkgao 2020-06-13
qscool 2020-06-12
chaocc0xs 2020-06-12