LintCode(101)刪除排序數組中的重復數字 II
來源:程序員人生 發布時間:2016-06-23 08:47:44 閱讀次數:2426次
題目
跟進“刪除重復數字”:
如果可以允許出現兩次重復將如何處理?
樣例
給出數組A =[1,1,1,2,2,3],你的函數應當返回長度5,此時A=[1,1,2,2,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,1,1,2,2,3],你的函數應當返回長度5,此時A=[1,1,2,2,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++代碼
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈