
二分
蒙奇·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 · 506 阅读 · 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 · 110 阅读 · 0 评论 -
二分查找-第一个错误的版本
题目链接 题目内容 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。 你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。 示例 1: 输入:原创 2022-01-05 22:15:39 · 86 阅读 · 0 评论 -
算法笔记-二分法求平方根
题目链接69. Sqrt(x) 做这一题是看着carl的代码随想录二分算法的专题过来的。 因为事先知道是二分算法,所以思路比较清晰,但是因为总是没考虑到细节,错了很多次。 易错点 数据范围,因为题目给的数字可能是最大的整形数字,如果相乘就会溢出,一定要考虑数据范围,可以使用 long 或者 long lon 如果没有找到刚好为整数的平方根,就要从 left 和 right 中找到最大的符合题目条件的一个。其实这里是可以优化的。 可优化点 这是我的代码,非常的臃肿 class Solution { pub原创 2022-01-03 21:59:51 · 628 阅读 · 0 评论