3 回答

TA貢獻(xiàn)1851條經(jīng)驗 獲得超5個贊
當(dāng)您刪除前 3 個時,您將擁有 i=0,接下來數(shù)組列表將調(diào)整大小,因此當(dāng)您刪除時,您需要執(zhí)行 i - -。
class Solution {
public int removeElement(int[] nums, int val) {
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i = 0; i < nums.length; i++) {
list.add(nums[i]);
}
if(list.isEmpty()) {
return 0;
}
for(int i = 0; i < list.size(); i++) {
if(list.get(i) == val) {
list.remove(i);
i--;
}
}
return list.size();
}
}

TA貢獻(xiàn)1812條經(jīng)驗 獲得超5個贊
您根本不需要調(diào)用 remove(像您一樣刪除時,沒關(guān)系,但是例如,如果您在 foreach 循環(huán)中執(zhí)行此操作,它會在 . 上崩潰ConcurrentModificationException。相反,您可以確定是否將 item 添加到結(jié)果中列出或不在第一個for循環(huán)內(nèi)(我認(rèn)為這更安全):
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i = 0; i < nums.length; i++) {
if (nums[i] != val) {
list.add(nums[i]);
}
}
return list.size();
(我知道這不能直接回答你的問題)

TA貢獻(xiàn)1804條經(jīng)驗 獲得超7個贊
您沒有顯示任何打印代碼,但我假設(shè)您nums
根據(jù)此方法返回的數(shù)字進(jìn)行打印。這意味著您永遠(yuǎn)不會nums
以任何方式進(jìn)行更改,只需從那里打印前 n 個數(shù)字。您需要返回修改后的數(shù)組,而不僅僅是長度。
添加回答
舉報