package test30;
/**
* Desc: 移除元素
* Author: YYB
* Date: 2025/2/13
* 思路:在原来的数组中移除和val值相同的数,返回剩余数的个数,可以定义快慢两指针遍历数组,俩个指针初始都指向0,
只要快指针指向的数不等于val,慢指针当前指向的数改为快指针的数,然后慢指针+1
*/
public class test27 {
public static int removeElement(int[] nums, int val) {
//先处理边界条件
if (nums==null||nums.length==0){
return 0;
}
//定义慢指针指向0索引
int slow=0;
//再用快指针指向0索引,然后遍历数组
for (int fast = 0; fast < nums.length; fast++) {
//只要fast指向的元素不等于val,slow指向的元素改成fast指向的,fast遇到等于val的数就会跳过,
// 但slow会留在原地,直到下一个改为不为val的数,这样就相当于删除了值不为val的元素
if (nums[fast]!=val){
nums[slow]=nums[fast];
slow++;
}
}
return slow;
}
//测试用例
public static void main(String[] args) {
int[] nums = {0, 3, 1, 2, 1, 2, 5, 3, 4, 4};
System.out.println(removeElement(nums,4));
System.out.println(removeElement(nums,2));
System.out.println(removeElement(nums,3));
System.out.println(removeElement(nums,5));
}
}
【Java力扣题库27-移除元素】
最新推荐文章于 2025-03-27 16:26:03 发布

1165

被折叠的 条评论
为什么被折叠?



