zoukankan      html  css  js  c++  java
  • 删除元素(LintCode) .

    删除元素

    给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度。

    元素的顺序可以改变,并且对新的数组不会有影响。

    样例

    给出一个数组 [0,4,4,0,0,2,4,4],和值 4

    返回 4 并且4个元素的新数组为[0,0,0,2]

    思路就是把除删除元素外的元素移到最左边,r是最右端非被删除元素,可以在一开始就找到最右端非被删除元素。用i遍历数组,找到最左端被删除元素,把r所指元素赋到i位置即可。代码里我是先找最左端被删除元素,然后再找最右端非被删除元素。时间复杂度是相同的。

     1 public class Solution {
     2     /** 
     3      *@param A: A list of integers
     4      *@param elem: An integer
     5      *@return: The new length after remove
     6      */
     7     public int removeElement(int[] A, int elem) {
     8         int r = A.length - 1;
     9         if(r < 0) return 0;
    10         int i = 0;
    11         
    12         while(r > i) {
    13             if(A[i] == elem) {
    14                 while(A[r] == elem && r > 0) r--;
    15                 if(r > i) {
    16                     A[i] = A[r];
    17                     r--;
    18                 }
    19             }
    20             i++;
    21         }
    22         
    23         if(A[r] == elem) r--;
    24         
    25         return r + 1;
    26     }
    27 }
    View Code
  • 相关阅读:
    毫秒倒计时小Demo
    css3 翻转
    canvas
    html5
    css3
    一些免费的svn空间(SVN代码托管)
    Xcode 6制作动态及静态Framework
    ios 动态执行的代码
    ios nsarray对象问题
    iOS xcode 编译选项 architecture(cup架构问题)
  • 原文地址:https://www.cnblogs.com/FJH1994/p/5022094.html
Copyright © 2011-2022 走看看