[LeetCode] Remove Element

http://oj.leetcode.com/problems/remove-element/

排序, 然后 找到与目标相同的数列 都干掉

 1 class Solution {
 2 public:
 3     int removeElement(int A[], int n, int elem) {
 4         // IMPORTANT: Please reset any member data you declared, as
 5         // the same Solution instance will be reused for each test case.
 6         if (n == 0) return 0;
 7         sort(A, A + n);
 8         int open = -1, close = -1;
 9         for (int i = 0; i < n; ++i) {
10             if (open == -1 && A[i] == elem) {
11                 open = i;
12             }
13             if (open >= 0 && (i == n - 1 || A[i + 1] != elem)) {
14                 close = i;
15                 break;
16             }
17         }
18         if (open == -1 && close == -1) {
19             return n;
20         }
21         int d = close - open;
22         for (int i = open; i + d + 1 < n; ++i) {
23             A[i] = A[i + d + 1];
24         }
25         return n - d - 1;
26     }
27 };

 

posted @ 2013-11-18 21:16  NextLife  阅读(183)  评论(0)    收藏  举报