leetcode:2680 Remove Duplicates from Sorted Array 删除数组中的重复元素
生活随笔
收集整理的这篇文章主要介绍了
leetcode:2680 Remove Duplicates from Sorted Array 删除数组中的重复元素
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
leetcode:26
对数组元素进行去重,使得原数组重复元素最多保留1个
限制:
我们不可以额外分配数组,必须保持空间复杂度为O(1)
这个并不难实现:
复制代码class Solution(object):def removeDuplicates(self, nums):""":type nums: List[int]:rtype: int"""if len(nums) == 0:return 0k = 0for i in range(1, len(nums)):if nums[k] != nums[i]:k += 1nums[k] = nums[i]return k + 1
我们也可以使用python的特性实现该功能,十分精辟:
复制代码class Solution2(object):def removeDuplicates(self, nums):"""利用python属性:type nums: List[int]:rtype: int"""nums[:] = sorted(set(nums))return len(nums)
leetcode 80
对数组元素进行去重,使得原数组重复元素最多保留2个
复制代码class Solution(object):"""对数组元素进行去重,使得原数组重复元素最多保留2个"""def removeDuplicates(self, nums):""":type nums: List[int]:rtype: int"""if len(nums) <= 2:return len(nums)i, j, cnt = 1, 1, 1while j < len(nums):if nums[j] != nums[j - 1]:cnt = 1nums[i] = nums[j]i += 1else:if cnt < 2:nums[i] = nums[j]i += 1cnt += 1j += 1return idef removeDuplicates2(self, nums):"""very short code:param nums::return:"""i = 0for n in nums:if i < 2 or n > nums[i - 2]:nums[i] = ni += 1return i
问题来了:如果使得原数组重复元素最多保留k个
复制代码class Solution1(object):"""对数组元素进行去重,使得原数组重复元素最多保留k个"""def removeDuplicates(self, nums, k):""":type nums: List[int]:rtype: int"""if len(nums) <= k:return len(nums)i, j, cnt = 1, 1, 1while j < len(nums):if nums[j] != nums[j - 1]:cnt = 1nums[i] = nums[j]i += 1else:if cnt < k:nums[i] = nums[j]i += 1cnt += 1j += 1return idef removeDuplicates2(self, nums, k):"""very short code:param nums::return:"""i = 0for n in nums:if i < k or n > nums[i - k]:nums[i] = ni += 1return i
总结
以上是生活随笔为你收集整理的leetcode:2680 Remove Duplicates from Sorted Array 删除数组中的重复元素的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: python 网络编程之Socket通信
- 下一篇: 部分数据可视化结果