Leetcode数组模块刷题

二分查找

  1. 基础题目:https://leetcode.cn/problems/binary-search/
    题解:在数组有序情况下使用,每次使用middle作为比较。middle=(r-l)/2+l;防止溢出,通过与区间中点比较,调整下一次区间,注意l/r的更新是middle+-1,而不能直接等于middle。同时注意题目给出的区间,是开区间还是闭区间。
  2. 搜索插入位置:https://leetcode.cn/problems/search-insert-position/
    题解:还是使用二分查找,可以的优化是初始时判断范围是否在数组存储范围中,同时注意最后返回值,因为判断条件是lef<=right,所以退出循环,left是在右边的那个,可以直接返回,如果是right,需要+1,left是大于target,right是小于target.
  3. 在排序数组中查找元素的第一个和最后一个位置:https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/
    题解:看作两个二分,先找到target,然后把左部分和右部分再当成数组进行寻找目标target,注意分两部分,中间要重新初始化。找到target的时候对left或者right进行更新,判断剩下区间还有没有。
  4. x的开方:https://leetcode.cn/problems/sqrtx/description/
    题解:就是二分查找进行简单尝试,仅需修改进行更新的条件,测试平方大小的关系。
  5. 有效的完全平方数:https://leetcode.cn/problems/valid-perfect-square/description/
    题解:同上,进行尝试。
posted @ 2024-10-16 16:21  xiangsheng04  阅读(17)  评论(0)    收藏  举报