Leecode27 remove-element

题目描述

给定一个数组和一个值,使用就地算法将数组中所有等于这个值的元素删除,并返回新数组的长度。

元素的顺序可以更改。你不用去关心大于当前数组长度的空间里面存储的值。

分析

  • 前后两个指针,记作index 和end。
  • index指向的元素如果需要删除,用end将其覆盖,end–。
  • 这时继续检查index处是否需要删除。
  • 如果index指向的元素不需要删除index++。
  • 一直到index = end - 1 时循环结束。这时,有可能会有两种情况需要考虑。index处是否是要删除的元素。最后按情况返回。

java 代码

public class Solution {
    public int removeElement(int[] A, int elem) {
        if(A == null ||A.length == 0){
            return 0;
        }
        int index = 0;
        int end = A.length -1;
        while(index < end){
            if(A[index] == elem){
                A[index] = A[end];
                end--;
            }else{
               index ++; 
            }
        }
        if(A[index] == elem){
            return index;            
        }else{
            return index+1;
        }     
    
        
    }
}
发布了52 篇原创文章 · 获赞 0 · 访问量 575

猜你喜欢

转载自blog.csdn.net/weixin_40300702/article/details/104898723