mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 23:28:29 +08:00
@ -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
|
||||||
|
Reference in New Issue
Block a user