mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-10 04:06:51 +08:00
Merge pull request #2373 from cherrypicker404/master
Update0027.移除元素 Go示例代码/Update0704.二分查找 Go示例代码
This commit is contained in:
@ -256,17 +256,24 @@ class Solution:
|
|||||||
### Go:
|
### Go:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
|
// 快慢指针法
|
||||||
|
// 时间复杂度 O(n)
|
||||||
|
// 空间复杂度 O(1)
|
||||||
func removeElement(nums []int, val int) int {
|
func removeElement(nums []int, val int) int {
|
||||||
length:=len(nums)
|
// 初始化慢指针 slow
|
||||||
res:=0
|
slow := 0
|
||||||
for i:=0;i<length;i++{
|
// 通过 for 循环移动快指针 fast
|
||||||
if nums[i]!=val {
|
// 当 fast 指向的元素等于 val 时,跳过
|
||||||
nums[res]=nums[i]
|
// 否则,将该元素写入 slow 指向的位置,并将 slow 后移一位
|
||||||
res++
|
for fast := 0; fast < len(nums); fast++ {
|
||||||
|
if nums[fast] == val {
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
nums[slow] = nums[fast]
|
||||||
|
slow++
|
||||||
}
|
}
|
||||||
nums=nums[:res]
|
|
||||||
return res
|
return slow
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
```go
|
```go
|
||||||
|
@ -251,19 +251,29 @@ class Solution:
|
|||||||
(版本一)左闭右闭区间
|
(版本一)左闭右闭区间
|
||||||
|
|
||||||
```go
|
```go
|
||||||
|
// 时间复杂度 O(logn)
|
||||||
func search(nums []int, target int) int {
|
func search(nums []int, target int) int {
|
||||||
high := len(nums)-1
|
// 初始化左右边界
|
||||||
low := 0
|
left := 0
|
||||||
for low <= high {
|
right := len(nums) - 1
|
||||||
mid := low + (high-low)/2
|
|
||||||
|
// 循环逐步缩小区间范围
|
||||||
|
for left <= right {
|
||||||
|
// 求区间中点
|
||||||
|
mid := left + (right-left)>>1
|
||||||
|
|
||||||
|
// 根据 nums[mid] 和 target 的大小关系
|
||||||
|
// 调整区间范围
|
||||||
if nums[mid] == target {
|
if nums[mid] == target {
|
||||||
return mid
|
return mid
|
||||||
} else if nums[mid] > target {
|
} else if nums[mid] < target {
|
||||||
high = mid-1
|
left = mid + 1
|
||||||
} else {
|
} else {
|
||||||
low = mid+1
|
right = mid - 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 在输入数组内没有找到值等于 target 的元素
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@ -271,19 +281,29 @@ func search(nums []int, target int) int {
|
|||||||
(版本二)左闭右开区间
|
(版本二)左闭右开区间
|
||||||
|
|
||||||
```go
|
```go
|
||||||
|
// 时间复杂度 O(logn)
|
||||||
func search(nums []int, target int) int {
|
func search(nums []int, target int) int {
|
||||||
high := len(nums)
|
// 初始化左右边界
|
||||||
low := 0
|
left := 0
|
||||||
for low < high {
|
right := len(nums)
|
||||||
mid := low + (high-low)/2
|
|
||||||
|
// 循环逐步缩小区间范围
|
||||||
|
for left < right {
|
||||||
|
// 求区间中点
|
||||||
|
mid := left + (right-left)>>1
|
||||||
|
|
||||||
|
// 根据 nums[mid] 和 target 的大小关系
|
||||||
|
// 调整区间范围
|
||||||
if nums[mid] == target {
|
if nums[mid] == target {
|
||||||
return mid
|
return mid
|
||||||
} else if nums[mid] > target {
|
} else if nums[mid] < target {
|
||||||
high = mid
|
left = mid + 1
|
||||||
} else {
|
} else {
|
||||||
low = mid+1
|
right = mid
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 在输入数组内没有找到值等于 target 的元素
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
Reference in New Issue
Block a user