leetcode 27 移除元素
题目链接
解题思路
覆盖法
从前向后遍历数组,在遍历的过程中使用变量removedCount记住值等于val的元素的个数。
当遍历到位置i时:
- 如果nums[i] == val 表示有找到了一个需要被移除的元素,removedCount ++
- 如果nums[i]!=val表示该元素需要被向前移动 removedCount个位置
最后将数组的长度设置为最终保留下来的元素的个数。
解题代码
func removeElement(nums []int, val int) int {
removedCount := 0
resLength := 0
for i := 0; i < len(nums); i++ {
if nums[i] == val {
removedCount++
} else {
nums[i-removedCount] = nums[i]
resLength++
}
}
nums = nums[:resLength]
return resLength
}