class Solution {public int removeElement(int[] nums, int val) {// 暴力法int n = nums.length;for (int i = 0; i < n; i++) {if (nums[i] == val) {for (int j = i + 1; j < n; j++) {nums[j - 1] = nums[j];}i--;n--;}}return n;}
}
代碼邏輯解析
首先獲取數組長度
n
,這個n
會隨著元素的移除而動態減少外層循環遍歷數組:
for (int i = 0; i < n; i++)
- 當發現
nums[i] == val
(找到要移除的元素)時:- 內層循環將從
i+1
開始的所有元素向前移動一位:nums[j-1] = nums[j]
- 因為元素向前移動了,當前索引
i
需要減 1(i--
),否則會跳過下一個元素 - 數組長度減 1(
n--
),因為成功移除了一個元素
- 內層循環將從
- 當發現
最后返回
n
,即剩余元素的數量