代码随想录---数组笔记
作者:互联网
一、数组的定义
数组是存放在连续内存空间上的相同类型数据的集合
二、注意
(1)下标索引:数组下标都是从0开始的
(2)内存空间地址连续:删除或者增加元素时,要移动其他元素3的地址
(3)数组的元素是不能删的,只能覆盖
三、循环不变量规则
循环---->边界处理----->区间的定义---->不变量
四、经典数组题目
四道经典数组题目,每一道题目都代表一个类型,一种思想。
1、二分查找
(1)例题 704. 二分查找
(2)思路
1.前提是数组为有序数组,同时题目还强调数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的。
2.循环不变量规则:一般采用左闭右闭区间,也就是[left, right] 。
**3.注意循环条件:while left <= right: **
4.注意return -1不要放进else中,以免查找的target不存在时,返回的是None,而不是-1
(3)复杂度分析:
时间复杂度: O(logn)
空间复杂度:O(1)
(4)代码
def search(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums) - 1
while left <= right: # 候选区有值
mid = (left + right) // 2
if nums[mid] > target:
right = mid -1
elif nums[mid] < target:
left = mid + 1
else:
return mid
return -1 # 根据题意变化
(5) 相关题目推荐(力扣)
- 34.在排序数组中查找元素的第一个和最后一个位置【中等】
- 69.x 的平方根
- 367.有效的完全平方数
(6) 总结
标签:right,nums,复杂度,随想录,笔记,---,数组,指针,left 来源: https://blog.csdn.net/qq_40855100/article/details/119186413