做网店网站互联网广告联盟
文章目录
- 移除元素
- 解题思路
移除元素
给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 你不需要考虑数组中超出新长度后面的元素。
这种题想到第一种暴力循环,使用两个for循环嵌套+判断条件执行。
第二种,双指针或者叫快慢指针来完成。接下来演示如何快慢指针
解题思路
快慢指针,慢指针对应着返回的结果,快指针不断的向前寻找正确的值。正确的值就是不等于val的,说起来比较绕口,我们来看看代码
class Solution {public int removeElement(int[] nums, int val) {//校验if(nums.length <= 0){return 0;}//定义快慢指针int slowlyIndex = 0;int fastIndex = 0;for(; fastIndex < nums.length; fastIndex++){if(nums[fastIndex] != val){nums[slowlyIndex++] = nums[fastIndex];}}return slowlyIndex;}
}
看代码中,快指针一步一步的向前搜索,慢指针用于锁定正确的值。
我是小辉,24 届毕业生。当下是找工作ing,欢迎关注,持续分享。