移除元素(Java算法实现)

移除元素


题目

移除元素(力扣:27)

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

分析

该题和“移动零”是一类问题,只不过将0值换为一个指定值而已。

快速跳转《移动零(Java的2种算法实现)》

代码实现

    /**
     * 27. 移除元素
     * @param nums
     * @param val
     * @return
     */
    public int removeElement(int[] nums, int val) {
        if (nums == null){
            return -1;
        }
        int i =0, j=0;
        while (i<nums.length){
            if (nums[i] != val){
                //这里不需要将i和j进行交换,因为等于val的值移动后是无用的。
                nums[j] = nums[i];
                j++;
            }
            i++;
        }
        return j;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章