Re: [闲聊] 每日leetcode

楼主: JIWP (JIWP)   2024-06-12 19:08:25
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
作者: Smallsh (Smallsh)   2023-06-12 19:08:00
大师
作者: SecondRun (雨夜琴声)   2024-06-12 19:12:00
大师我看到这题第一个念头是 别骗了 企划以后一定会加颜色种类
楼主: JIWP (JIWP)   2024-06-12 19:15:00
这题加颜色要one pass就不太可能了

Links booklink

Contact Us: admin [ a t ] ucptt.com