二分
蒙奇·D·路飞·宝亮
我可是要成为海贼王的男人
展开
-
二分细节-剑指 Offer 11. 旋转数组的最小数字
题目链接这一题有一个细节要注意,必须比较最右边的端点,否则 mid 的元素值和 right 的元素值相等的时候不好缩小区间。因为当right > left 的时候 mid 的值是肯定小于 right 的,这样right–才能保证不会缩过头了,因为right前面至少有一个还能满足要求就是mid, 可以大胆的往前缩。class Solution {public: int minArray(vector<int>& numbers) { int left =原创 2022-01-07 00:11:41 · 490 阅读 · 0 评论 -
二分查找-33. 搜索旋转排序数组-一句话点透
题目链接整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为[nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …,nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为[4,5,6,7,0,1,2] 。给你 旋转后 的数组 nums 和一原创 2022-01-07 00:04:24 · 96 阅读 · 0 评论 -
二分查找-第一个错误的版本
题目链接题目内容你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。示例 1:输入:原创 2022-01-05 22:15:39 · 76 阅读 · 0 评论 -
算法笔记-二分法求平方根
题目链接69. Sqrt(x)做这一题是看着carl的代码随想录二分算法的专题过来的。因为事先知道是二分算法,所以思路比较清晰,但是因为总是没考虑到细节,错了很多次。易错点数据范围,因为题目给的数字可能是最大的整形数字,如果相乘就会溢出,一定要考虑数据范围,可以使用 long 或者 long lon如果没有找到刚好为整数的平方根,就要从 left 和 right 中找到最大的符合题目条件的一个。其实这里是可以优化的。可优化点这是我的代码,非常的臃肿class Solution {pub原创 2022-01-03 21:59:51 · 590 阅读 · 0 评论