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