空间复杂度O(1)
题目中不需要保持数组按照原来的顺序。
返回值是删除完key的剩余元素个数。所以我们使用前后指针,f指针指到key的位置,l指最后非key的位置。交换元素。
func removeElement(nums []int, val int) int {i, j := 0, len(nums) - 1for {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
}