/**
* @Author:Sumschol
* @date: Created in 17:01 22/01/28
* @Descriptions:
* 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
*
* 不要使用额外的数组空间,你必须仅使用 $O(1)$ 额外空间并原地修改输入数组。
*
* 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
*
* 示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 你不需要考虑数组中超出新长度后面的元素。
*
* 示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。
*
* 你不需要考虑数组中超出新长度后面的元素。
* @thinking:
* 快慢指针法
* 两指针同时向右移动,如果 快指针 = 目标值,慢指针不移动
* 如果 快指针 ≠ 目标值 【则用快指针内容覆盖慢指针内容】
* 下标 <=slow 的元素即为删除目标元素后的数组
*/
public class RemovingElements {
public static void main(String[] args) {
}
public static int removeElement(int[] nums, int val) {
int fast = 0, slow = 0;
for(int i = 1; i <= nums.length; i++){
if(nums[fast] != val){
nums[slow] = nums[fast];
slow++;
}
fast++;
}
return slow;
}
}
[LeedCode]移除元素
于 2022-01-28 17:23:15 首次发布