2025/6/30
题目(easy):
我的思路:
很容易发现,要想让数组严格递增,需要记录两个信息,
一个是:当前递增到的最后一个数字 例如(【3,4,5】中5就是最后一个递增数字)
一个是:数组中遍历到的当前数字 例如(【3,4,6,6,7】中,当前可以遍历到7)
这就意味着我们可以用双指针来解决这个问题
代码如下:
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
l = len(nums)
result = 0 #返回结果,记录有几个不重复的数字,同时充当记录当前递增到的数字的下一位的指针
lastNum = 0
for i in range(l):
if result == 0 or lastNum != nums[i]:
nums[result] = nums[i] #把确实可以严格递增的数字移动到本该递增的位置
result+=1 #总是记录当前最后递增数字位置的下一位
lastNum = nums[i]
else:
continue
return result
时间复杂度:O(n)【需要遍历整个数组】
空间复杂度:O(1)【只用到了常数作为额外的空间】
总结:
①观察解决问题需要记录的信息点有哪些,数组一般采用遍历方式