![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分查找
萌萌,站起来
这个作者很懒,什么都没留下…
展开
-
二分搜索 总结
我们还根据逻辑将「搜索区间」全都统一成了两端都闭,便于记忆,只要修改两处即可变化出三种写法: int binary_search(int[] nums, int target) { int left = 0, right = nums.length - 1; while(left <= right) { int mid = left + (right - l...原创 2020-07-12 15:49:30 · 93 阅读 · 0 评论 -
leetcode 1300. 转变数组后最接近目标值的数组和 (星期一再写一遍)
给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。 如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。 请注意,答案不一定是 arr 中的数字。 示例 1: 输入:arr = [4,9,3], target = 10 输出:3 解释:当选择 value 为 3 时,数组会变成 [3, 3, 3],和为 9 ,这是最接近原创 2020-06-14 12:34:37 · 148 阅读 · 0 评论 -
lee287 寻找重复数 二分 快慢指针 环入口节点
给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。 示例 1: 输入: [1,3,4,2,2] 输出: 2 示例 2: 输入: [3,1,3,4,2] 输出: 3 说明: 不能更改原数组(假设数组是只读的)。 只能使用额外的 O(1) 的空间。 时间复杂度小于 O(n2) 。 数组中只有一个重复的数字,但它可能不止重复出现一次。 用二分查找 二分法的思路是先猜一个数(有效范围 [left,原创 2020-05-26 10:33:55 · 213 阅读 · 0 评论 -
美团面试 4.9 找旋转数组中的目标值, 字符串判断循环
solution 二分查找,当时大闹混乱,其实仔细想想把它们先分成大类再看小类,因为肯定是要比头指针、尾指针、和mid值的 三个怎么一起比,先比mid public class test3 { public static void main(String[] args) { int[] s= {3,2,8,7,6,5,4}; int target=7; int res=solu...原创 2020-04-10 16:15:27 · 135 阅读 · 0 评论 -
面试题:不用sqrt()得出平方根,向下取整
我的思路 先是自己的思路 while循环 i从1开始,i的平方小于等于x且(i+1)的平方大于x,则返回i; 时间复杂度o(n) 考官提醒 二分查找 因为找平方根所以找一半就行 用二分查找法效率更高 找一半 public static int mySqrt(int x) { int low = 0; int high = x/2; while(low<=hi...原创 2019-11-13 14:34:57 · 476 阅读 · 0 评论 -
new排序数组中查找数字
统计一个数字在排序数组中出现的次数。 直接 遍历数组统计出现次数 O(n) 二分搜索找到一个数,然后再分别前后扫描O(n) 更好的用二分查找 二分查找直接找到第一个k和最后一个k?? 一、.找第一个k 先看数组中间,mid>k,下次在数组前半段找 mid《k,在后半段找就可以了 如果mid=k,先判断是不是第一个k, 1.如果中间数的前一个也是k,那么第一个k在前半段找 2.如果不是k了,那...原创 2019-10-23 13:34:52 · 80 阅读 · 0 评论 -
new 旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路 暴力 遍历一遍如果前一个大于后一个,返回后一个 注: 1.数组为空时,返回0 2.数组就一个元素时 ,返回arra...原创 2019-10-12 22:03:56 · 88 阅读 · 0 评论