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
,即剩余元素的数量