26. 刪除排序陣列中的重複項/27. 移除元素/80. 刪除排序陣列中的重複項 II
阿新 • • 發佈:2018-12-27
26. 刪除排序陣列中的重複項
class Solution {
public:
//劍指offer面試3不一樣,這題用的雙指標Ori,New
int removeDuplicates(vector<int>& nums) {
int len = nums.size();
if (len <= 0)return 0;
int New = 0,Ori = 0;
for (New, Ori; New < len&&Ori < len;)
{
int temp = nums[Ori];
while (Ori < len&& temp == nums[Ori] )// 跳過重複的數
Ori++;
nums[New] = temp; New++;
}
nums.erase(nums.begin()+New,nums.end());//刪除最後的New到最後的資料
len = nums.size();
return len;
}
};
27. 移除元素
class Solution {
public:
//再用雙指標
int removeElement(vector< int>& nums, int val) {
int len = nums.size();
if (len <= 0)return 0;
int New = 0, Ori = 0;
for (New, Ori; New < len&&Ori < len;)
{
while (Ori< len&&nums[Ori] == val)Ori++;
if (Ori < len)//防止上面最後一個元素相等
{
nums[New] = nums[Ori];
New++ ;
Ori++;
}
}
nums.erase(nums.begin() + New, nums.end());
return nums.size();
}
};
80. 刪除排序陣列中的重複項 II
要求:給定一個排序陣列,你需要在本體刪除重複出現的元素,使得每個元素最多出現兩次
,返回移除後陣列的新長度。