删除有序数组中的重复元素python,leetcode 合并有序数组
给你一个有序数组nums,请将重复的元素就地删除,使每个元素最多出现两次,并返回被删除数组的新长度。
不是使用额外的数组空间,而是必须就地修改输入数组,并用O(1)额外的空间来完成它。
描述:
为什么返回值是整数,输出答案却是数组?
请注意,输入数组是通过引用传递的,这意味着在函数中修改输入数组对调用者是可见的。
您可以想象内部操作如下:
//nums通过“引用”传递。也就是说,不要复制这些论点。
int len=remove duplicates(nums);
//在函数中修改输入数组对调用者是可见的。
//根据你的函数返回的长度,它会打印出该长度范围内数组中的所有元素。
for(int I=0;我leni ) {
print(nums[I]);
}例1:
输入:nums=[1,1,1,2,2,3]
输出:5,nums=[1,1,2,2,3]
说明:函数应该返回新的length length length=5,原数组的前五个元素修改为1,1,2,2,3。不需要考虑数组中超出新长度的元素。示例2:
输入:nums=[0,0,1,1,1,2,3,3]
输出:7,nums=[0,0,1,1,2,3,3]
说明:函数应该返回新的length length length=7,原数组的前五个元素修改为0,0,1,1,2,3,3。不需要考虑数组中超出新长度的元素。提示:
1=nums。长度=3 * 104-104=nums [I]=104 nums已按升序排列。代码1:采用额外矢量。
类别解决方案{
公共:
int remove duplicates(vector int nums){
sort(nums.begin()、nums . end());
if (nums.size()=2)
返回nums . size();
int temp count=1;
vector int tempvec
for(int I=0;I nums . size();)
{
int num=nums[I];
tempcount=count(nums.begin()、nums.end()、nums[I]);//计算当前数字出现的次数
if(温度计数2)
{
temp vec . push _ back(nums[I]);
temp vec . push _ back(nums[I]);
}
else if (tempcount==1)
{
temp vec . push _ back(nums[I]);
}
其他
{
temp vec . push _ back(nums[I]);
temp vec . push _ back(nums[I]);
}
nums . erase(STD:remove(nums . begin()、nums.end()、nums . end());
}
for(int I=0;I temp vec . size();我)
{
cout temp vec[I]endl;
}
nums . resize(temp vec . size());
copy(tempvec.begin()、tempvec.end()、nums . begin());
返回nums . size();
}
};代码2:没有使用额外的向量。
类别解决方案{
公共:
int remove duplicates(vector int nums){
sort(nums.begin()、nums . end());
if (nums.size()=2)
返回nums . size();
int totallen=nums . size();
int temp count=1;
for(int I=0;I nums . size();)
{
int num=nums[I];
tempcount=count(nums.begin()、nums.end()、nums[I]);//统计0出现的次数
total en-=tempcount;
nums . erase(STD:remove(nums . begin()、nums.end()、nums . end());
if(温度计数2)
{
nums . push _ back(num);
nums . push _ back(num);
}
else if (tempcount==1)
{
nums . push _ back(num);
}
其他
{
nums . push _ back(num);
nums . push _ back(num);
}
if(totaln==0)
打破;
}
for(int I=0;I nums . size();我)
{
cout nums[I]endl;
}
返回nums . size();
}
};
我不是的。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。