zoukankan      html  css  js  c++  java
  • 乘风破浪:LeetCode真题_027_Remove Element

    乘风破浪:LeetCode真题_027_Remove Element

    一、前言

         这次是从数组中找到一个元素,然后移除该元素的所有结果,并且返回长度。

    二、Remove Element

    2.1 问题

    2.2 分析与解决

        这个题和上一题是非常相似的,只不过这次是从数组中找到给定的元素,并且删除该元素,同时返回剩余数组的长度,超过长度的元素不用管,存不存在都可以。于是我们想到了和上次一样的方法,用一个指针指向开始,一个指向结尾,开始的向后移动,如果遇到需要删除的元素,则用最后的元素替代,最后的指针向前移动,然后再次从修改的位置开始往后遍历,这样等到两个指针重合,我们就得到了想要的结果。

    class Solution {
        public int removeElement(int[] nums, int val) {
            int start = 0,end = nums.length-1;
            if(nums.length==0){
                return 0;
            }
            while(start<end){
                if(nums[start]==val){
                    nums[start] = nums[end];
                    end--;
                }else{
                    start++;
                }
            }
            if(nums[start]==val){
                start--;
                end--;
            }
            return end+1;
        }
    }
    

    三、总结

        小的问题,细节上也很重要,比如空的数组等等,考虑问题的时候一定要全面,测试用例要多一点。

  • 相关阅读:
    LifeRay学习记录
    jQuery选择器
    JavaScript中for..in循环陷阱
    Python课程回顾(day18)
    Python课程回顾(day17)
    Python课程回顾(day15)
    Python课程回顾(day14)
    Python课程回顾(day13)
    Python课程回顾(day12)
    Python课程回顾(day11)
  • 原文地址:https://www.cnblogs.com/zyrblog/p/10222283.html
Copyright © 2011-2022 走看看