Merge pull request #1896 from KieranTou/master

为27.移除元素增加go语言的相向双指针法
This commit is contained in:
程序员Carl
2023-02-16 09:42:48 +08:00
committed by GitHub

View File

@ -231,6 +231,31 @@ func removeElement(nums []int, val int) int {
return res 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:
```javascript ```javascript