移除元素(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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章