zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    docker 基本概念
    6_State 游戏开发中使用状态机
    5_Singleton 游戏开发中的单例模式
    4_Prototype 原型
    3_observer
    2_flyweight, 轻量化模式
    1_Command 游戏开发命令模式
    CentOS7 Failed to start LSB: Bring up/down解决方法
    CentOS 7 中firewall-cmd命令
    CentOS查询端口占用和清除端口占用的程序
  • 原文地址:https://www.cnblogs.com/jjtx/p/3970368.html
Copyright © 2011-2022 走看看