题目:给定一个数组num,和value如果num中的某个元素与value相等,则删除该元素,之后并返回新数组长度
此题和删除数组中重复的元素的题型类似
public static void main(String[] args) {
// 双指针的用法:就是用将一个数组当成两个来用,将arr[slow]数组当做空数组往里面填值
int[] arr = new int[]{1,3,3,4};
int value = 3;
int fast = 0;
int slow = 0;
while (fast<arr.length){
//如果与value不相等则放入“新数组arr[slow]”,指针后移,如果相等则跳过此元素(即fast++),直到遇见不相等的再次插入新数组
if (arr[fast] != value){
arr[slow] = arr[fast];
// slow相当于记录新数组长度
slow++;
}
fast++;
}
// 方法二:for循环和while用法没什么区别
/* for(int i = 0;i< arr.length;i++){
if (arr[i] != value) {
arr[fast] = arr[i];
fast++;
}
}
System.out.println(fast);*/
System.out.println(slow);
for (int i = 0;i<slow;i++){
System.out.println(arr[i]);
}
}