为27.移除元素增加go语言的相向双指针法
This commit is contained in:
parent
89c01d6547
commit
20faa53739
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue