二分查找
题解:
此题使用二分查找的方法:一般使用二分查找的注意的点是,给定的数据结构是有序,本题中已经说明数组nums是一个有序数组,那么就不用去考虑给数组排序的问题。
在上面的代码中我们使用的一种写法是:while left <= right,在此处使用的是小于等于,这个相当于什么呢,就是左闭右闭区间 [left, right],就是说left == right是有意义的,if nums[mid] > right: right 要赋值为mid -1,因为当前这个num[mid]值一定不是target,所以查找的左区间一定是mid - 1的。
还有一种写法是左闭右开,即 [left, right),在此区间内,left == right是无意义的,因此我们的循环写法是:while left < right,代码如下,大家发现有两个不同点:
1.right的初始值
2.right的赋值
移除元素
暴力解法:
双指针法:
双指针法(快慢指针法):通过一个快指针和慢指针在一个for循环下完成两个for循环的工作
定义快慢指针:
快指针:寻找新的数组的元素,新数组就是不含有目标元素的数组
慢指针:指向更新 新数组下标的位置
网友评论