乘风破浪:LeetCode真题_027_Remove Element
Posted 精心出精品
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了乘风破浪: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; } }
三、总结
小的问题,细节上也很重要,比如空的数组等等,考虑问题的时候一定要全面,测试用例要多一点。
以上是关于乘风破浪:LeetCode真题_027_Remove Element的主要内容,如果未能解决你的问题,请参考以下文章
乘风破浪:LeetCode真题_031_Next Permutation
乘风破浪:LeetCode真题_007_Reverse Integer
乘风破浪:LeetCode真题_035_Search Insert Position
乘风破浪:LeetCode真题_040_Combination Sum II