首页 > 代码库 > leetcode Remove Duplicates from Sorted Array II
leetcode Remove Duplicates from Sorted Array II
1 /***************************************************************** 2 created: 2014/09/13 16:16 3 filename: remove-duplicates-from-sorted-array.cpp 4 author: Justme0 (http://blog.csdn.net/justme0) 5 6 purpose: 有序数组中,有至少三个相同元素时删掉只留两个 7 https://oj.leetcode.com/problems/remove-duplicates-from-sorted-array-ii/ 8 *****************************************************************/ 9 10 #include <iostream>11 #include <cassert>12 #include <vector>13 using namespace std;14 15 class Solution {16 public:17 int removeDuplicates(int A[], int n) {18 if (n <= 2) {19 return n;20 }21 22 vector<int> iVec;23 iVec.push_back(A[0]);24 for (int i = 1; i < n - 1; ++i) {25 if (!(A[i - 1] == A[i] && A[i] == A[i + 1])) {26 iVec.push_back(A[i]);27 }28 }29 iVec.push_back(A[n - 1]);30 31 assert(iVec.size() <= unsigned(n));32 for (unsigned i = 0; i < iVec.size(); ++i) {33 A[i] = iVec[i];34 }35 36 return iVec.size();37 }38 };39 40 class Solution2 {41 public:42 int removeDuplicates(int A[], int n) {43 if (n <= 2) {44 return n;45 }46 47 int len = 2;48 for (int i = 2; i < n; ++i) {49 if (A[i] != A[len - 2]) {50 A[len] = A[i];51 ++len;52 }53 }54 assert(len <= n);55 56 return len;57 }58 };59 60 int main(int argc, char **argv) {61 int arr[] = {1, 1, 2, 2, 3};62 int len = sizeof arr / sizeof *arr;63 int new_len = Solution2().removeDuplicates(arr, len);64 for (int i = 0; i < new_len; ++i) {65 cout << arr[i] << endl;66 }67 68 system("PAUSE");69 return 0;70 }
leetcode Remove Duplicates from Sorted Array II
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。