C++ 中從已排序陣列中刪除重複項
假設我們有一個已排序陣列 nums,我們需要就地刪除其中的重複項,使得重複元素最多出現兩次,並返回新的長度。為此,我們不能使用額外的空間。我們必須使用 O(1) 的空間量來解決此問題。例如,如果陣列像 [0,0,0,1,1,1,1,2,3,3],那麼輸出將為 [0,0,1,1,2,3,3],長度為 7
讓我們看看步驟 -
- len := 2 和 n := 陣列大小
- 如果 n <= 2,則返回 n
- 對於 i := 2 至 n
- 如果 nums[i] != nums[len - 2] 或 nums[i] != nums[len - 1]
- nums[len] := nums[i],並將 len 加 1
- 如果 nums[i] != nums[len - 2] 或 nums[i] != nums[len - 1]
- 返回 len
為了更好地理解,讓我們看看以下實現 -
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int len = 2;
int n = nums.size();
if(n <= 2)return n;
for(int i = 2; i < n; i++){
if( nums[i] != nums[len - 2] || nums[i] != nums[len - 1]){
nums[len] = nums[i];
len++;
}
}
return len;
}
};
main(){
Solution ob;
vector<int> v = {0,0,0,1,1,1,1,2,3,3};
cout << ob.removeDuplicates(v);
}輸入
[0,0,0,1,1,1,1,2,3,3]
輸出
7
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
JavaScript
PHP