数组
数组是存放在连续空间的相同类型数据的集合
- 数组的下标都是从0开始的
- 数组的内存空间是连续的
数组的元素是不能删除的,只能覆盖
二分查找
习题链接. - 力扣(LeetCode)(二分查找)
二分法前提是 有序数组,数组中无重复元素。
区间的定义是不变量,遵循循环不变量的原则
二分查找算法的基本原理
-
确定搜索区间:开始时,搜索区间是整个数组。
-
查找中间元素:在每次迭代中,找到当前搜索区间的中间元素。
-
比较目标值:
- 如果中间元素等于目标值,搜索成功,返回中间元素的索引。
- 如果中间元素小于目标值,说明目标值位于中间元素的右侧,调整搜索区间为中间元素右侧的部分。
- 如果中间元素大于目标值,说明目标值位于中间元素的左侧,调整搜索区间为中间元素左侧的部分。
-
重复上述过程:不断重复上述过程,直到找到目标值或搜索区间为空。
左闭右闭
左闭右开
移除元素
暴力法
两个for循环
双指针法(快慢)
快指针:寻找新数组的元素,新数组就是不包含要删除元素的数组
慢指针:更新数组
-
快指针先移动,如果不是目标元素,快指针指向就赋值给慢指针指向,慢指针移动
-
如果是目标元素,则慢指针不操作,快指针继续移动。
-
慢指针最后指向的下标,就是新数组中的大小
小白零基础,一刷第一天打卡,期待60天之后的自己!
时间:3h