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

浙公网安备 33010602011771号