描述
给一个整数数组,去除重复的元素。
你应该做这些事
1.在原数组上操作
2.将去除重复之后的元素放在数组的开头
3.返回去除重复元素之后的元素个数
不需要保持原数组的顺序
您在真实的面试中是否遇到过这个题? 是
样例
给出 nums = [1,3,1,4,4,2]
,你需要做以下操作
1.将重复元素扔在最后面 => nums = [1,3,4,2,?,?]
.
2.返回个数 4
实际上我们并不在意?
是什么
挑战
1.O(n)时间复杂度.
2.O(nlogn)时间复杂度但没有额外空间
实现代码:
这个题其实很简单,不过一定要看清题目要求,四个标红的描述
class Solution:
"""
@param: nums: an array of integers
@return: the number of unique integers
"""
def deduplication(self, nums):
# write your code here
exist_nums = {}
pointer = 0
#这个题其实很简单,不过要求真的有点绕,必须修改nums,将unique数放到前面
for num in nums:
if num not in exist_nums:
exist_nums[num] = True
nums[pointer] = num
pointer += 1
return pointer