已经坚持了一个月了,但总结的太少,感觉提高还是不够,今天开始总结
先开个新题:
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/description/
原地从一个排序数组中删除重复的元素,思路还是双指针【快慢指针】
因为是排过序的,那么相同的一定是相邻的,那么用s代表是结果数组开始的位置,f比s初识快一步,如果s和f指向的值不相同,那么f这个指向的值就应该是结果数组的值,这时就需要s指针向前走一步,并且这个值应该就是f所指向的那个值。
嗯,开始有点被绕进去了,非要去删除相同的,其实应该是“逆向”的找不同的就好。
class Solution(object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) == 0:
return 0
s = 0
for f in range(1,len(nums)):
if nums[s] != nums[f]:
s+=1
nums[s] = nums[f]
return s+1