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)
收获
①
了解了原地算法。
最简单的描述是:输出将输入覆盖。
原地算法
②
了解并创建三指针。