leetcode:26&80 Remove Duplicates from Sorted Array 删除数组中的重复元素
2018-02-13 20:23
579 查看
leetcode:26
对数组元素进行去重,使得原数组重复元素最多保留1个限制:
我们不可以额外分配数组,必须保持空间复杂度为O(1)
这个并不难实现:
class Solution(object): def removeDuplicates(self, nums): """ :type nums: List[int] :rtype: int """ if len(nums) == 0: return 0 k = 0 for i in range(1, len(nums)): if nums[k] != nums[i]: k += 1 nums[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, 1 while j < len(nums): if nums[j] != nums[j - 1]: cnt = 1 nums[i] = nums[j] i += 1 else: if cnt < 2: nums[i] = nums[j] i += 1 cnt += 1 j += 1 return i def removeDuplicates2(self, nums): """ very short code :param nums: :return: """ i = 0 for n in nums: if i < 2 or n > nums[i - 2]: nums[i] = n i += 1 return 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, 1 while j < len(nums): if nums[j] != nums[j - 1]: cnt = 1 nums[i] = nums[j] i += 1 else: if cnt < k: nums[i] = nums[j] i += 1 cnt += 1 j += 1 return i def removeDuplicates2(self, nums, k): """ very short code :param nums: :return: """ i = 0 for n in nums: if i < k or n > nums[i - k]: nums[i] = n i += 1 return i
相关文章推荐
- [Leetcode] Remove duplicates from sorted array ii 从已排序的数组中删除重复元素
- LeetCode: Remove Duplicates from Sorted Array II(在排序数组中删除重复元素)
- LeetCode | Remove Duplicates from Sorted Array(删除有序数组的重复元素)
- 【LeetCode-面试算法经典-Java实现】【026-Remove Duplicates from Sorted Array(删除排序数组中的重复元素)】
- [Leetcode] Remove duplicates from sorted array 从已排序的数组中删除重复元素
- Leetcode刷题记——26. Remove Duplicates from Sorted Array(删除数组重复元素)
- LeetCode Remove Duplicates from Sorted Array II 删除整型数组中的重复元素并返回剩下元素个数2
- leetcode 题解:Remove Duplicates from Sorted Array II(已排序数组去三次及以上重复元素)
- leetcode-26&80 Remove Duplicates from Sorted Array I&II
- [LeetCode-26] Remove Duplicates from Sorted Array(移除数组重复元素)
- leetcode 4. 移除有序数组中的重复元素 Remove Duplicates from Sorted Array
- Remove Duplicates from Sorted Array II 从有序数组里移除重复出现元素,最多重复出现2次 @LeetCode
- 删除有序数组中的重复元素 Remove Duplicates from Sorted Array
- leetcode 26. Remove Duplicates from Sorted Array从排序数组中移出重复元素(双指针)
- LeetCode-26-Remove Duplicates from Sorted Array(消除已排序数组中的重复元素)
- LeetCode 26 Remove Duplicates from Sorted Array(从已排序数组中移除重复元素)
- Leetcode刷题记—— Remove Duplicates from Sorted Array II(已排序数组移除重复元素2)
- LeetCode-26&80.Remove Duplicates from Sorted Array
- LeetCode-Remove Duplicates from Sorted Array II (删除重复元素,使重复次数最多N次)
- LeetCode 26. Remove Duplicates from Sorted Array(移除有序数组的重复元素)