**题目:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
**
思路:因为这个题是:不需要考虑数组中超出新长度后面的元素。所以可以把和输入的数字不同的值依次放在前面这样得到的就是一个不包含有输入的目标值的新数组
/**
* FileName: Remove_Dome27
* Author: 86186
* Date: 2022/3/15 21:25
* Description: Remove_Dome27
* History:
* <author> <time> <version> <desc>
* 作者姓名 修改时间 版本号 描述
*/
package com.cq.Dome;
import java.util.Arrays;
/**
* 〈一句话功能简述〉<br>
* 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
*
* 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
*
* 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
* 不需要考虑数组中超出新长度后面的元素。
* @author Hacker
* @create 2022/3/15
* @since 1.0.0
*/
public class Remove_Dome27 {
public static void main(String[] args) {
int[] array = {1,2,3,4,5,6,7};
int target = 2;
System.out.println(method_Remove(array,target));
}
public static int method_Remove(int[] a,int b){
int k = 0;
for(int i = 0;i < a.length;i ++){
if(a[i] != b){
a[k ++] = a[i];
}
}
return k;
}
}