//704.二分查找
package main
import "fmt"
func search(nums []int, target int) int {
left := 0
right := len(nums) - 1
for left <= right { //注意:go语言中没有while用for循环代替
middle := left + (right-left)/2 //注意:取中间元素下标为 left + (right-left)/2
if target < nums[middle] {
right = middle - 1
} else if target > nums[middle] {
left = middle + 1
} else {
return middle
}
}
return -1
}
func main() {
nums := []int{-1, 0, 3, 5, 9, 12}
target := 9
res := search(nums, target)
fmt.Printf("res: %v\n", res) //4
}
//27 删除元素
package main
import "fmt"
func removeElement(nums []int, val int) int {
low := 0 //慢指针对应新数组
for fast := 0; fast < len(nums); fast++ { //快指针遍历旧数组
if nums[fast] != val { //如果快指针的值不等于要删除的元素
nums[low] = nums[fast] //将快指针的值复制给慢指针,赋值给新数组
low++ //慢指针向后移动一位
}
}
return low //low对应新数组元素的长度,长度为0~low-1
}
func main() {
nums := []int{0, 1, 2, 2, 3, 0, 4, 2}
target := 2
res := removeElement(nums, target)
fmt.Printf("res: %v\n", res)
}