其他分享
首页 > 其他分享> > 代码随想录---数组笔记

代码随想录---数组笔记

作者:互联网

一、数组的定义

数组是存放在连续内存空间上的相同类型数据的集合

二、注意

(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) 相关题目推荐(力扣)

35.搜索插入位置–讲解

(6) 总结

标签:right,nums,复杂度,随想录,笔记,---,数组,指针,left
来源: https://blog.csdn.net/qq_40855100/article/details/119186413