mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 15:09:40 +08:00
为27.移除元素增加go语言的相向双指针法
This commit is contained in:
@ -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
|
||||
|
Reference in New Issue
Block a user