天天看點

移除元素 & 移動零

Remove Element

題目描述

​​移除元素​​​

給定一個數組 nums 和一個值 val,你需要原地移除所有數值等于 val 的元素,傳回移除後數組的新長度。

不要使用額外的數組空間,你必須在原地修改輸入數組并在使用 O(1) 額外空間的條件下完成。

元素的順序可以改變。你不需要考慮數組中超出新長度後面的元素。

示例 :

給定 nums = [0,1,2,2,3,0,4,2], val = 2,

函數應該傳回新的長度 5, 并且 nums 中的前五個元素為 0, 1, 3, 0, 4。

注意這五個元素可為任意順序。

你不需要考慮數組中超出新長度後面的元素。

解決方案

考慮傳回值坐标左邊的為已經判定沒有目标元素的,右邊可能有目标元素待判斷的。Java實作:

class Solution {
    public int removeElement(int[] nums, int val) {
        int ret=0;
        for(int i=0;i<nums.length;i++){
            if(nums[i]!=val){
                nums[ret]=nums[i];
                ret++;
            }
        }
        return      

Move Zeroes

題目描述

​​移動零​​​

給定一個數組 nums, 編寫一個函數将所有 0 移動到它的末尾,同時保持非零元素的相對順序。

解決方案

class Solution {
    public void moveZeroes(int[] nums) {
        int ret=0;
        for(int i=0;i<nums.length;i++){
            if(nums[i]!=0){
                nums[ret]=nums[i];
                ret++;
            }
        }
        for(;ret<nums.length;ret++){
            nums[ret]=0;
        }
    }
}