import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @param val int整型 
     * @return int整型
     */
       public int remove_cows (int[] nums, int val) {
        // 快慢指针
        int slow = 0;
        int fast = 0;
		 // 只要值不相等就赋值给nums[slow++]的下标,slow用来存放值不等于val的,fast用来遍历全部数组
        while(fast<nums.length){
            if(nums[fast]!=val){
                nums[slow++] = nums[fast];
            }
            fast++;
        }
		 // 最终返回的slow就是去除val值后的数组长度
        return slow;
    }
}

本题知识点:

1.数组和快慢指针

2.或者可以用哈希表之类的,但没必要,要求原地修改

本题解法分析:

1.根据快慢指针进行遍历然后赋值

2.值不相等就赋值给nums[slow++]的下标,slow用来存放值不等于val的,fast用来遍历全部数组

3.最后注意返回的是慢指针即可

本题使用编程语言: Java