由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 谁给个数组分段题二分法的总结啊?
相关主题
请教大家一个算法的面试题目请问可以用二分法判断一个数组是否sorted吗?
继续研究数组分段题[算法]二分搜索变体
解决二分查找变体题的一种思路find median for k sorted arrays
大家谈论算法时所说的“二分法”是不是就是所谓的binary search或是它的变形?二维排序数组的查找正解是O(M+N)的复杂度吗
问一道careercup150上的题一个题
对facebook的印象极差G一道题
问个google面试题Young table的搜索最快能到多少阿?
find duplication and missing in array问一个我onsite的题
相关话题的讨论汇总
话题: mid话题: sum话题: upper话题: 数组话题: 分段
进入JobHunting版参与讨论
1 (共1页)
g*********s
发帖数: 1782
1
dp我看明白了,但怎么继续优化还没看懂。
二分法:
int lower = max{A_i}, upper = sum(A_i);
while (lower <= upper) {
// what should we do here?
}
x******g
发帖数: 41
2
我的理解,
算mid
然后从用mid的值把sum的数组分段得到k_n
如果k_n>k,说明mid小了,在upper right重复搜索
反之在left搜索
比如
2 2 2 2 2 5 5 5 1 1 1 1 1
sum:2 4 6 8 10 15 20 25 26 27 28 29 30
lo = 5, hi = 30
mid = 17
17可以把sum数组分成2段,
2 4 6 8 10 15 20 | 25 26 27 28 29 30
所以17太大了,lo=5,hi=16
mid = 10
正好3段,结束
g*********s
发帖数: 1782
3

算mid
然后从用mid的值把sum的数组分段得到k_n
怎么个分段法?k_n是什么?
如果k_n>k,说明mid小了,在upper right重复搜索
反之在left搜索
比如
2 2 2 2 2 5 5 5 1 1 1 1 1
sum:2 4 6 8 10 15 20 25 26 27 28 29 30
lo = 5, hi = 30
mid = 17
17可以把sum数组分成2段,
2 4 6 8 10 15 20 | 25 26 27 28 29 30
这个分段怎么来的?和17有什么关系?
所以17太大了,lo=5,hi=16
mid = 10
正好3段,结束

【在 x******g 的大作中提到】
: 我的理解,
: 算mid
: 然后从用mid的值把sum的数组分段得到k_n
: 如果k_n>k,说明mid小了,在upper right重复搜索
: 反之在left搜索
: 比如
: 2 2 2 2 2 5 5 5 1 1 1 1 1
: sum:2 4 6 8 10 15 20 25 26 27 28 29 30
: lo = 5, hi = 30
: mid = 17

x******g
发帖数: 41
4
k_n是用这个mid的值把sum可以分成几个段
简单的方法就是从头开始扫描,
到sum值大于mid,记作一段
sum归零,继续扫描
看能得到几段,这个值就是k_n

【在 g*********s 的大作中提到】
:
: 算mid
: 然后从用mid的值把sum的数组分段得到k_n
: 怎么个分段法?k_n是什么?
: 如果k_n>k,说明mid小了,在upper right重复搜索
: 反之在left搜索
: 比如
: 2 2 2 2 2 5 5 5 1 1 1 1 1
: sum:2 4 6 8 10 15 20 25 26 27 28 29 30
: lo = 5, hi = 30

g*********s
发帖数: 1782
5
oh, then u can use lower/upper_bound instead of linear search.
it's upper_bound for sum > mid, or lower_bound for sum >= mid?

【在 x******g 的大作中提到】
: k_n是用这个mid的值把sum可以分成几个段
: 简单的方法就是从头开始扫描,
: 到sum值大于mid,记作一段
: sum归零,继续扫描
: 看能得到几段,这个值就是k_n

x******g
发帖数: 41
6
不是,mid分段扫描是linear的
二分是说找mid的值是二分的
所以复杂度是O(NlogM) N是数组的size,M是summation
大牛们correct me if i am wrong, thanks

【在 g*********s 的大作中提到】
: oh, then u can use lower/upper_bound instead of linear search.
: it's upper_bound for sum > mid, or lower_bound for sum >= mid?

g*********s
发帖数: 1782
7
what if the array elements are all non-negative?

【在 x******g 的大作中提到】
: 不是,mid分段扫描是linear的
: 二分是说找mid的值是二分的
: 所以复杂度是O(NlogM) N是数组的size,M是summation
: 大牛们correct me if i am wrong, thanks

1 (共1页)
进入JobHunting版参与讨论
相关主题
问一个我onsite的题问一道careercup150上的题
问一道求数组拐点值的题对facebook的印象极差
二分查找真的不容易写对问个google面试题
新鲜亚麻店面面经find duplication and missing in array
请教大家一个算法的面试题目请问可以用二分法判断一个数组是否sorted吗?
继续研究数组分段题[算法]二分搜索变体
解决二分查找变体题的一种思路find median for k sorted arrays
大家谈论算法时所说的“二分法”是不是就是所谓的binary search或是它的变形?二维排序数组的查找正解是O(M+N)的复杂度吗
相关话题的讨论汇总
话题: mid话题: sum话题: upper话题: 数组话题: 分段