LintCode(101)删除排序数组中的重复数字 II
发布时间:2020-12-13 21:08:50 所属栏目:PHP教程 来源:网络整理
导读:题目 跟进“删除重复数字”: 如果可以允许出现两次重复将如何处理? 您在真实的面试中是不是遇到过这个题? Yes 样例 给出数组A = [1,1,2,3] ,你的函数应当返回长度5,此时A= [1,3] 。 分析 与上题思路相同,只需要增加1个记录元素出现次数的变量便可,限
题目跟进“删除重复数字”: 如果可以允许出现两次重复将如何处理?
样例
给出数组A =[1,1,2,3],你的函数应当返回长度5,此时A=[1,3]。 分析与上题思路相同,只需要增加1个记录元素出现次数的变量便可,限制最多出现2次。
Python代码class Solution:
"""
@param A: a list of integers
@return an integer
"""
def removeDuplicates(self,A):
# write your code here
if len(A) == 0:
return 0
times = 1
k = 0
for i in range(1,len(A)):
if A[i] != A[k]:
k += 1
A[k] = A[i]
times = 1
else:
if times >= 2:
continue
else:
k += 1
A[k] = A[i]
times += 1
del A[k+1:len(A)]
return len(A)
GitHub -- Python代码
C++代码/*
101 删除排序数组中的重复数字 II
跟进“删除重复数字”:
如果可以允许出现两次重复将如何处理?
您在真实的面试中是不是遇到过这个题? Yes
样例
给出数组A =[1,3],你的函数应当返回长度5,此时A=[1,3]。
*/
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,times=1;
for(int i=1; i<n; ++i)
{
if(nums[i] != nums[k])
{
nums[++k] = nums[i];
times = 1;
}else if(nums[i] == nums[k]){
if(times >= 2)
{
continue;
}else{
nums[++k] = nums[i];
++times;
}//else
}//elif
}//for
nums.resize(k+1);
return k+1;
}
}; GitHub -- C++代码(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |