为27.移除元素增加go语言的相向双指针法

This commit is contained in:
KieranTou
2023-02-15 17:03:16 +08:00
parent 89c01d6547
commit 20faa53739

View File

@ -231,6 +231,31 @@ func removeElement(nums []int, val int) int {
return res
}
```
```go
//相向双指针法
func removeElement(nums []int, val int) int {
// 有点像二分查找的左闭右闭区间 所以下面是<=
left := 0
right := len(nums) - 1
for left <= right {
// 不断寻找左侧的val和右侧的非val 找到时交换位置 目的是将val全覆盖掉
for left <= right && nums[left] != val {
left++
}
for left <= right && nums[right] == val {
right--
}
//各自找到后开始覆盖 覆盖后继续寻找
if left < right {
nums[left] = nums[right]
left++
right--
}
}
fmt.Println(nums)
return left
}
```
JavaScript:
```javascript