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通信
- 下一篇: 部分数据可视化结果