题目
给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。
不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。
分析
对排序数组去重,要求空间复杂度为O(1)
遍历一次数组,将不重复元素保留,重复元素被覆盖,最后删除末尾剩余的元素即可。
Python代码
# #100 删除排序数组中的重复数字 # class Solution: """ @param A: a list of integers @return an integer """ def removeDuplicates(self, A): # write your code here k=0 for i in range(1,len(A)): if A[i] != A[k]: k+=1 A[k] = A[i] del A[k+1:len(A)] return len(A)
C++代码
/* 100 删除排序数组中的重复数字 给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。 您在真实的面试中是否遇到过这个题? Yes 样例 给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。 */ class Solution { public: /** * @param A: a list of integers * @return : return an integer */ int removeDuplicates(vector<int> &nums) { // write your code here if(nums.empty()) { return 0; }//if int n = nums.size(),k=0; for(int i=1;i<n;++i) { if(nums[i] != nums[k]) { nums[++k] = nums[i]; }//if }//for nums.resize(k+1); return k+1; } };
时间: 2024-10-28 21:52:51