75. Sort Colors
给一个array nums
nums里面的元素指有可能是1、2、3
请将nums由小到大排序好
题目要求in place 且one-pass
思路:
有点像quick sort的思路
用前、中、后指标
用中指标去遍历整个数组
会有三种情况
(1) 0 : 遇到0就将中指标元素与前指标元素互换,并且两个都向前1位
(2) 1 : 遇到1就单纯让中指标向前就好
(3) 2 : 遇到2就让后指标和中指标互换,并且后指标往回1位
当中指标超过后指标跳出循环
golang code :
func sortColors(nums []int) {
n:=len(nums)
idx1,idx2,idx3:=-1,0,n
for idx3>idx2{
switch nums[idx2]{
case 0:
idx1++
nums[idx1],nums[idx2]=nums[idx2],nums[idx1]
idx2++
case 1:
idx2++
case 2:
idx3