Merge pull request #2373 from cherrypicker404/master

Update0027.移除元素 Go示例代码/Update0704.二分查找 Go示例代码
This commit is contained in:
程序员Carl
2023-12-22 08:51:42 +08:00
committed by GitHub
2 changed files with 63 additions and 36 deletions

View File

@ -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

View File

@ -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
} }
``` ```