由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请教一个facebook面试题
相关主题
请教个题目,求最长subarry, average < khow to obtain a subarray whose sum is a specific given number?
onsite遇到的几个面试题一道面试题
问一道算法题largest subsequence sum <= maxsorted arry, 找最长重复subarray
Maximum Contiguous Subarray[合集] 一个算法题
刚电面完,分享两个题目问个最长递增序列的问题
求 Maximum Subarray divide and conquer 解法MMD, 死在了longest contiguous increasing sub-array上了.
[问一道题] maximum contiguous subarray with sum >= target number问一道题(5)
每次刷题都有新发现关于最长递增子序列的问题。
相关话题的讨论汇总
话题: 递增话题: subarray话题: contiguous话题: 扫描话题: 起点
进入JobHunting版参与讨论
1 (共1页)
L***Q
发帖数: 508
1
据称是facebook面试题,大意如下:
给一个int array,找出最长的递增的contiguous subarray。算法worst case是O(n)
,如何提高average 的效率。
算法我想了一个:给定array A,从左到右扫描。最初起点为A[0]找出递增的
contiguous subarray,假设结束与A[k-1]。然后以A[k]为起点扫描下一个递增的
contiguous subarray。worse case为O(n)。
关于如何提高average效率,我想到2个策略:
1. 如果剩下未扫描部分小于当前最长的递增的contiguous subarray,那剩下不用扫描
了;
2. 假设当前最长递增的contiguous subarray长度为k,接下来的扫描起点是A[i],那
么首先比较A[i+k]和A[i+k+1],如果A[i+k]大于A[i+k+1],那么跳过A[i]到A[i+k],以
A[i+k+1]作为扫描起点。因为如果A[i+k]大于A[i+k+1],从A[i]开始的递增的
contiguous subarray长度最多为k,那可以不用扫描。
第二个策略有一个变形时当A[i+k-1] < A[i+k] < A[i+k+1]时以A[i]为扫描起点。
不知道各位还有没有其他提高average 效率的策略呢?
f***g
发帖数: 214
2
再贡献一个想法:
第二策略,除了判断
if( A[i+k] > A[i+k+1] ) 跳到 A[i+k+1]
还有
if( A[i+k] - A[i] < k ) 同样跳过
(这里面假设是严格单调递增)
y******5
发帖数: 43
3
不能这样跳吧。A[i+1]到A[i+k]可能符合递增。

【在 f***g 的大作中提到】
: 再贡献一个想法:
: 第二策略,除了判断
: if( A[i+k] > A[i+k+1] ) 跳到 A[i+k+1]
: 还有
: if( A[i+k] - A[i] < k ) 同样跳过
: (这里面假设是严格单调递增)

f***g
发帖数: 214
4
给个例子?

【在 y******5 的大作中提到】
: 不能这样跳吧。A[i+1]到A[i+k]可能符合递增。
y******5
发帖数: 43
5
不知道我理解得是否准确。 A[i+1]可以比A[i]小啊,所以不能根据A[i+k] - A[i] < k
就直接跳
到A[i+k]吧。

【在 f***g 的大作中提到】
: 给个例子?
L***Q
发帖数: 508
6
或许是我题目表述不清楚。找到的subarray是连续的,并且递增的。所以A[i+1] < A{i
]的话这个subarray就不符合条件。
我觉得fzblg提供的策略是对的。如果是严格递增,那通过判断A[k+i] - A[i] > k决定
是否跳过A[i]是对的。如果题目没说是严格递增,应该不能这么判断。

k

【在 y******5 的大作中提到】
: 不知道我理解得是否准确。 A[i+1]可以比A[i]小啊,所以不能根据A[i+k] - A[i] < k
: 就直接跳
: 到A[i+k]吧。

i**********e
发帖数: 1145
s*****y
发帖数: 897
8
Ye. I remember this post I read last year. The most niu method.

【在 i**********e 的大作中提到】
: 这个板上讨论过,看看...
: http://www.mitbbs.com/article_t/JobHunting/31724411.html

j*****u
发帖数: 1133
9
depends on CPU cache line size and current_max_len, in real life jumping may
not be more efficient than liner scanning since it could introduce a lots o
f cache miss/reloading.

【在 s*****y 的大作中提到】
: Ye. I remember this post I read last year. The most niu method.
1 (共1页)
进入JobHunting版参与讨论
相关主题
关于最长递增子序列的问题。刚电面完,分享两个题目
一道面试题求助求 Maximum Subarray divide and conquer 解法
问一个老的google面试题[问一道题] maximum contiguous subarray with sum >= target number
问一道面试题每次刷题都有新发现
请教个题目,求最长subarry, average < khow to obtain a subarray whose sum is a specific given number?
onsite遇到的几个面试题一道面试题
问一道算法题largest subsequence sum <= maxsorted arry, 找最长重复subarray
Maximum Contiguous Subarray[合集] 一个算法题
相关话题的讨论汇总
话题: 递增话题: subarray话题: contiguous话题: 扫描话题: 起点