空间复杂度O(1)
题目中不需要保持数组按照原来的顺序。
返回值是删除完key的剩余元素个数。所以我们使用前后指针,f指针指到key的位置,l指最后非key的位置。交换元素。
func removeElement(nums []int, val int) int {
i, j := 0, len(nums) - 1
for {
for i < len(nums) && nums[i] != val {
i++
}
for j >= 0 && nums[j] == val {
j--
}
if i >= j {
break
}
nums[i], nums[j] = nums[j], nums[i]
}
return i
}
本文介绍了一种高效删除数组中特定元素的算法,采用前后指针技术实现原地删除,复杂度为O(1),适用于不需保持原数组顺序的场景。通过交换元素位置,该算法能快速移除所有目标值,最终返回剩余元素的数量。
540

被折叠的 条评论
为什么被折叠?



