码迷,mamicode.com
首页 > 其他好文 > 详细

乘风破浪:LeetCode真题_027_Remove Element

时间:2019-01-04 21:20:42      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:不用   text   mil   end   bubuko   删除   pre   leetcode   前言   

乘风破浪: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;
    }
}

技术分享图片

三、总结

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

乘风破浪:LeetCode真题_027_Remove Element

标签:不用   text   mil   end   bubuko   删除   pre   leetcode   前言   

原文地址:https://www.cnblogs.com/zyrblog/p/10222283.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!