基本上跟27题很像,输入是一个已经排序好的数组,最後输出非重复数值的数量,然後以下几点要注意:
只能修改该数组,利用的空间复杂度最多为1(意思就是不能创建新的数组append值)
不用管超过回传值以後nums的值
"""
比方说输入的 nums = [0,0,1,1,1,2,2,3,3,4]
那最後回传值要等於五,且 nums[:5] 要包含 0, 1, 2, 3, 4 这几个数字,然後数字在该切片里的顺序不重要
"""
head 纪录当前非重复的下标 (有点像 selection sort),i 回圈遍历到的当前元素,如果跟当前不一样非重复下标 head 加一,然後新的下标得值跟不一样的值进行交换。1
class Solution:
def removeDuplicates(self, nums) -> int:
head = 0
i = 1
while i < len(nums):
if nums[head] != nums[i]:
head += 1
nums[head], nums[i] = nums[i], nums[head]
i += 1
return head + 1
跟 while 原理一样只是改写 (这里用for 会好一点,因为不管怎麽样都要循环整个数组)
class Solution:
def removeDuplicates(self, nums) -> int:
head = 0
for i in range(1, len(nums)):
if nums[head] != nums[i]:
head += 1
nums[head]= nums[i]
return nums
意义跟上面一样,只是从纪录非重复的,变成纪录重复的数量
class Solution:
def removeDuplicates(self, nums) -> int:
count = 0
for i in range(1, len(nums)):
if nums[i] == nums[i-1]:
count += 1
else:
nums[i-count] = nums[i]
return nums
>>: [用 Python 解 LeetCode] (003) 80. Remove Duplicates from Sorted Array II
因为疫情的关系,学校从5月中旬就开始了远(ㄕㄨˇ)距(ㄐㄧㄚˋ) 各级学校除了最开始的设备、网路问题...
变数的大小 sizeof(<型别>) 可以查看某型别占用多少记忆体空间,单位是位元组 #...
上一篇我们介绍了Struct这个语法,也大致介绍它的宣告、使用方式,不晓得大家有没有清楚一些呢! ...
前情提要 终於做出时间了,却又卡在流程问题,这次解决是否能顺利回到过去? 我:那要怎麽样避免因为流程...
读到Dispatcher有种越来越难的感觉QQ 这些太高深的东西对於小萌新来说真的好杀热情阿 估计今...