由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - binary search的更新和边界问题
相关主题
有没有人总结过binary search是mid加减1和小于或者等于的情况分类请教一道Google面试题
binary search什么时候用l问个问题binary search 的变体
binary search里面你们是用 < 还是<=从电面的feedback看细节决定成败
请问如何binary search出数组中的重复元素解决二分查找变体题的一种思路
binary search in rotated sorted array有重复时怎么办?请教一个排序的问题
九章算法的 解答不怎么样啊问个merge interval的变体题
A Simple Question on Binary Search找2个sorted array中的第K小的元素,有O(lgn)方法吗?
简单题不能觉得会了就不去练习白板coding请教一个常见的面试题的答案
相关话题的讨论汇总
话题: binary话题: search话题: 边界问题话题: while话题: 边界
进入JobHunting版参与讨论
1 (共1页)
f*********m
发帖数: 726
1
不少方法都用到了binary search。设左右边界为l和r,边界中值为m。有些题用的是
while (l <= r),有的用的是while (l < r),m有的是m=l+(r-l)/2,有的是m=(l+r+1)/2
。挺晕的。
除了具体问题具体分析之外,有没有什么规律可循?
K*****k
发帖数: 430
2
m = L + (R - L) / 2 可以防止L + R 超出整数范围
还有while (L + k < r)的,其中k是一个小整数,是为了可以提早退出,避免一些边界
条件

2

【在 f*********m 的大作中提到】
: 不少方法都用到了binary search。设左右边界为l和r,边界中值为m。有些题用的是
: while (l <= r),有的用的是while (l < r),m有的是m=l+(r-l)/2,有的是m=(l+r+1)/2
: 。挺晕的。
: 除了具体问题具体分析之外,有没有什么规律可循?

K*****k
发帖数: 430
3
其实就是看:
至少还有几个元素的时候继续循环
标准的二分查找当然是至少还有一个元素,用while (L <= R)
但是有的变体,比如返回序号最大的或者最小的,修改L和R的时候可能导致死循环
比如L = 3, R = 4, M = 3,修改L或者R后,下次还是
L = 3, R = 4, M = 3
这样,就要用while (L + 1 < R), 至少还有三个元素的时候才继续循环,两个元素或
者一个元素的时候就该早点结束循环了。
f*********m
发帖数: 726
4
大牛能否详细说说“返回序号最大的或者最小的“的原题是什么?
谢谢。

【在 K*****k 的大作中提到】
: 其实就是看:
: 至少还有几个元素的时候继续循环
: 标准的二分查找当然是至少还有一个元素,用while (L <= R)
: 但是有的变体,比如返回序号最大的或者最小的,修改L和R的时候可能导致死循环
: 比如L = 3, R = 4, M = 3,修改L或者R后,下次还是
: L = 3, R = 4, M = 3
: 这样,就要用while (L + 1 < R), 至少还有三个元素的时候才继续循环,两个元素或
: 者一个元素的时候就该早点结束循环了。

l*****a
发帖数: 14598
5
sorted array,
given a target,
find the max index or min index if it is in the array

【在 f*********m 的大作中提到】
: 大牛能否详细说说“返回序号最大的或者最小的“的原题是什么?
: 谢谢。

f*********m
发帖数: 726
6
多谢。

【在 l*****a 的大作中提到】
: sorted array,
: given a target,
: find the max index or min index if it is in the array

w****x
发帖数: 2483
7

2
正常的都是 <= 吧, 要不会漏掉?, 我习惯写(l+r)/2, 说溢出的都是鸡蛋里挑骨头


【在 f*********m 的大作中提到】
: 不少方法都用到了binary search。设左右边界为l和r,边界中值为m。有些题用的是
: while (l <= r),有的用的是while (l < r),m有的是m=l+(r-l)/2,有的是m=(l+r+1)/2
: 。挺晕的。
: 除了具体问题具体分析之外,有没有什么规律可循?

l*****a
发帖数: 14598
8
how about those who mentioned that
(l+r)>>1 is faster than (l+r)/2

【在 w****x 的大作中提到】
:
: 2
: 正常的都是 <= 吧, 要不会漏掉?, 我习惯写(l+r)/2, 说溢出的都是鸡蛋里挑骨头
: 了

t*********h
发帖数: 941
9
how about L/R=M+1?

【在 K*****k 的大作中提到】
: 其实就是看:
: 至少还有几个元素的时候继续循环
: 标准的二分查找当然是至少还有一个元素,用while (L <= R)
: 但是有的变体,比如返回序号最大的或者最小的,修改L和R的时候可能导致死循环
: 比如L = 3, R = 4, M = 3,修改L或者R后,下次还是
: L = 3, R = 4, M = 3
: 这样,就要用while (L + 1 < R), 至少还有三个元素的时候才继续循环,两个元素或
: 者一个元素的时候就该早点结束循环了。

1 (共1页)
进入JobHunting版参与讨论
相关主题
请教一个常见的面试题的答案binary search in rotated sorted array有重复时怎么办?
onsite面试题一道九章算法的 解答不怎么样啊
给定一个值和sorted队列,找到所有pair(其和等于给定值)A Simple Question on Binary Search
请教一个binary search tree和heap的问题。简单题不能觉得会了就不去练习白板coding
有没有人总结过binary search是mid加减1和小于或者等于的情况分类请教一道Google面试题
binary search什么时候用l问个问题binary search 的变体
binary search里面你们是用 < 还是<=从电面的feedback看细节决定成败
请问如何binary search出数组中的重复元素解决二分查找变体题的一种思路
相关话题的讨论汇总
话题: binary话题: search话题: 边界问题话题: while话题: 边界