Lintcode:删除排序数组中的重复数字Ⅱ
程序员文章站
2022-06-11 13:02:11
...
问题:
给你一个排序数组,删除其中的重复元素,使得每个数字最多出现两次,返回新的数组的长度。
如果一个数字出现超过2次,则这个数字最后保留两个。
样例:
样例 1: 输入: [] 输出: 0 样例 2: 输入: [1,1,1,2,2,3] 输出: 5 样例解释: 长度为 5, 数组为:[1,1,2,2,3]
python:
class Solution:
"""
@param: nums: An ineger array
@return: An integer
"""
def removeDuplicates(self, nums):
# write your code here
if len(nums) <= 2:
return len(nums)
index = 1
sameNum = 1
for i in range(1,len(nums)):
if nums[i] == nums[i-1]:
sameNum+=1
else:
sameNum = 1
if sameNum <= 2:
nums[index] = nums[i]
index += 1
nums = nums[:index]
return len(nums)
C++:
class Solution {
public:
/**
* @param A: a list of integers
* @return : return an integer
*/
int removeDuplicates(vector<int> &nums) {
// write your code here
if(nums.size() <= 2)
{
return nums.size();
}
int sameNum = 1;
int index = 1;
for (int i = 1; i < nums.size(); i++) {
if(nums[i] == nums[i-1])
{
sameNum++;
}else{
sameNum = 1;
}
if(sameNum <= 2)
{
nums[index] = nums[i];
index++;
}
}
nums.resize(index);
return index;
}
};
上一篇: ASP.NET MVC
下一篇: 删除数组中的重复数字I