Remove Element @leetcode

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

!特征向量的思想,尽管有点大材小用,但是我的确是从djstla中获得的灵感。

 1 class Solution {
 2 public:
 3     int removeElement(int A[], int n, int elem) {
 4         int *b = new int[n+1];
 5         b[0] = 0;
 6         for(int i = 0;i < n;++i){
 7             if(A[i] == elem){
 8                 b[i+1] = b[i]+1;
 9             }
10             else {
11                 b[i+1] = b[i];
12             }
13         }
14 
15         for(int i =0 ;i< n;++i){
16             A[i - b[i]] = A[i];
17         }
18         int res = n - b[n];
19         delete []b;
20         return res;
21     }
22 };

!ac后重新审视自己的代码,总能发现更好的方式。而福尔摩斯不需要纸和笔,所有的这一切只要想就可以得到结果。记得《血色研究》中写道,同时代的侦探不乏,然后举了一个侦探SCM调查案件的过程,最后添了一句话:“而这一切福尔摩斯只是在抽一抖烟中解决了”。这就是我和大牛的区别。

 1 class Solution {
 2 public:
 3     int removeElement(int A[], int n, int elem) {
 4         int tmp = 0;
 5         for(int i = 0;i < n;++i){
 6             if(A[i] == elem){
 7                 A[i-tmp] = A[i];
 8                 tmp++;
 9             }
10             else{
11                 A[i-tmp] = A[i];
12             }
13         }
14         return n - tmp;
15     }
16 };

 

posted @ 2013-11-29 11:33  沙茶面  阅读(204)  评论(0编辑  收藏  举报