Leetcode 移除元素 Java 3ms

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

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

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

示例 1:

給定 nums = [3,2,2,3], val = 3,

函數應該返回新的長度 2, 並且 nums 中的前兩個元素均爲 2。

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

考慮使用迭代器 迭代遍歷列表,列表去除數據。

PS:需要注意加黑部分,一個循環中不能出現兩次it.next(),會發生java.util.NoSuchElementException訪問衝突錯誤。

例如: while(it.hasNext())
            {
              int x = it.next();
              if(x==val)
                it.remove();
              else{
                  nums[j]=it.next();
                    j++;  
              }                       
            }

是錯誤的。

class Solution {
    public int removeElement(int[] nums, int val) {
            List<Integer> list=new ArrayList<Integer>();
            for(int i=0;i<nums.length;i++)
                list.add(nums[i]); 
            int j=0;
            Iterator<Integer> it=list.iterator();
            while(it.hasNext())
            {
              int x = it.next();
              if(x==val)
                it.remove();
              else{
                  nums[j]=x;
                    j++;  
              }                  
    
            }
            return list.size(); 
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章