刷题笔记day01-数组
704 题
主要强调,左闭右闭的情况,就是每次查询都会和 [left, right] 进行比较。所以后面的都是mid-1,mid+1 的情况。
package mainfunc search(nums []int, target int) int {// 二分查找方法// 每次查找都是左闭右闭的情况left := 0right := len(nums) - 1var mid intfor left <= right {mid = left + ((right - left) >> 1)if target > nums[mid] {left = mid + 1} else if target < nums[mid] {right = mid - 1} else {return mid}}return -1
}func main() {res := search([]int{-1, 0, 3, 5, 9, 12}, 9)println(res)
}
27 移除元素
思路:直观的想法就是,遇到等于val的时候,之后后面的往前面一个个覆盖,类似于是插入排序。
// 使用快慢指针的方法,
快指针一定指向不是val的元素
相当于是遇到等于不等与的情况,slow++,然后和fast换
当遇到等于的情况,slow就指向val了,
func removeElement(nums []int, val int) int {// 使用快慢指针的方法,直观的想法就是,遇到等于val的时候,之后后面的var slow = 0for fast := 0; fast < len(nums); fast++ {if nums[fast] != val {nums[slow] = nums[fast] slow++}}return slow
}