数组是我们用到最多的
删除排序数组中的重复项
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
### 方法1 双指针从左向右
def removeDuplicates(nums):
"""
:type nums: List[int]
:rtype: int
"""
right, inder = 0, 1
nums.sort()
for i in range(len(nums) + 1):
if nums[right] == nums[inder]:
inder = inder + 1
else:
right = right + 1
nums[right] = nums[inder]
return right+1,nums[:right+1]
## 方法2 反向查询
class Solution(object):
def removeDuplicates(self, nums):
nums.sort()
inder = -1
for i in range(len(nums)-1):
if nums[inder] == nums[inder-1]:
del nums[inder]
else:
inder=inder-1
return len(nums),nums
if __name__ == '__main__':
nums = [1, 2, 3, 2, 1, 3, 4, 1]
num, nums = Solution().removeDuplicates(nums)
print("无重复列表长度{},值{}".format(num, nums))
网友评论