LeetCode python-75. 颜色分类
先看题目:
(题目来力扣网站)

思路
①创建三个指针
②如果中间指针从头开始索引:
若值num[k]=0,则和nums[i] 的值交换位置,此时i+1,代表i+1之前的索引不用再检测,已经检测过了;
若值num[k]=2,则和nums[j] 的值交换位置,此时j-1,代表j-1之后的索引不用再访问,通过交换,已经知道后面的值;
若值num[k]=1,则i+1,继续访问下一个索引。
class Solution:
def sortColors(self, nums):
#荷兰国旗 三指针
i = 0
j = len(nums) - 1
k = 0
while k <= j :
if nums[k] == 0 and k >i:
nums[i],nums[k] = nums[k],nums[i]
i += 1
elif nums[k] == 2 and k < j:
nums[k] ,nums[j] = nums[j],nums[k]
j -= 1
else:
k +=1
p = Solution()
nums = [1,0,0,1,2,1,0,1,2]
res = p.sortColors(nums)
print(nums)

收获
①
了解了原地算法。
最简单的描述是:输出将输入覆盖。
原地算法
②
了解并创建三指针。

本文详细解析了LeetCode上的经典题目——75.颜色分类的算法实现,采用荷兰国旗问题的三指针解决方案,通过具体代码示例展示了如何原地对数组进行排序,使之分别按0、1、2三种颜色分类。

771

被折叠的 条评论
为什么被折叠?



