由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - longestCommonPrefix 究竟怎样时间复杂度最低?
相关主题
做了一道挺有意思的题请教电面试题
Reverse String 有 O(logn)的方法么?这个题怎么做啊?
facebook intern 面经关于2D, 3D平面上点的问题?
re: 面试归来,上面经回馈各位战友求 Maximum Subarray divide and conquer 解法
几种linked List (array) merge 的复杂度(附个人体会)onsite求bless 附g家面试题
discuss an array rearrange question发个google的面试题
interview中被问到没有的做过的东西怎么回答?面试题总结(5) - Binary search and divide and conquer
心情坏到极点dynamic programming 和divide and conquer区别
相关话题的讨论汇总
话题: strs话题: longest话题: 复杂度
进入JobHunting版参与讨论
1 (共1页)
j******2
发帖数: 362
1
2分法是O(m*log(n)),
如果数组长度变化很大,可以先用O(n)把最小的选出来,总的复杂度就可以是O(n+min(
m)*log(n))。
如果n很大而m不大,就不要选min(m)。
大家觉得呢?
h****n
发帖数: 1093
2
二分的复杂度也是O(n×m)吧
两两比较 N/2 + N/4 + N/8 + ...+ 1 = N
复杂度还是O(N×M)啊
你怎么个二分的
j******2
发帖数: 362
3
是我想错了。土了。那就在扫的时候自动检测了最短的了,所以直接就是O(n*min(m))
了。对吗?还有更简便的方法吗?

【在 h****n 的大作中提到】
: 二分的复杂度也是O(n×m)吧
: 两两比较 N/2 + N/4 + N/8 + ...+ 1 = N
: 复杂度还是O(N×M)啊
: 你怎么个二分的

h****n
发帖数: 1093
4
这个其实只能叫divide and conquer
二分一般都是指binary search。。。
好像没法优化了,要非得说优化就按照你说的先找到最短的然后开始一个一个比

【在 j******2 的大作中提到】
: 是我想错了。土了。那就在扫的时候自动检测了最短的了,所以直接就是O(n*min(m))
: 了。对吗?还有更简便的方法吗?

j******2
发帖数: 362
5
那就在扫的时候自动检测了最短的了,所以直接就是O(n*min(m))
了。对吗

【在 h****n 的大作中提到】
: 这个其实只能叫divide and conquer
: 二分一般都是指binary search。。。
: 好像没法优化了,要非得说优化就按照你说的先找到最短的然后开始一个一个比

h****n
发帖数: 1093
6
恩。不过我觉得复杂度应该是O(N×avg(M))

【在 j******2 的大作中提到】
: 那就在扫的时候自动检测了最短的了,所以直接就是O(n*min(m))
: 了。对吗

j******2
发帖数: 362
7
每检测一个元素时不是同时也看了它是不是到队尾了吗?所以不会扫超过min(m)轮。
另外我在想:divide and conquer是不是只能把quadratic变成log linear,对本身
linear的问题没有帮助啊?

【在 h****n 的大作中提到】
: 恩。不过我觉得复杂度应该是O(N×avg(M))
d******i
发帖数: 76
8
对啊,这个怎么能用到二分查找呢?
逐个头比较吧,O(N * M)
h****n
发帖数: 1093
9
你的M是指什么呀,我的M是指字符串的长度 avg M是指字符串的平均长度
具体M是多少和你字符串的排列是有关系的
考虑两种极端的情况,假设所有字符串的字符都是同一个字符,
第一种所有字符按照长度从长排到短,那么比较下来的长度就是AVG M
第二种就是所有字符按照长度从短到长排,那么比较下来的长度就是MIN M
divide conquer的复杂度可以用主定理来分析的,主要看最终的复杂度看分支数量,子
问题规模和合并操作的开销
T(n)=a(T/b) + O(n^d)
T(n)= n^d if d > logb a
= n^(logb a) if d < logb a
= n^d * lgn if d == logb a

【在 j******2 的大作中提到】
: 每检测一个元素时不是同时也看了它是不是到队尾了吗?所以不会扫超过min(m)轮。
: 另外我在想:divide and conquer是不是只能把quadratic变成log linear,对本身
: linear的问题没有帮助啊?

d******i
发帖数: 76
10
写的一个c++代码。 worst case O(N * M)
string longestCommonPrefix(vector &strs) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(strs.size() == 0) return "";
int longest = 0;
while(longest < strs[0].size())
{
for(int i = 1; i {
if(longest == strs[i].size() || strs[i][longest] != strs[0][
longest])
return strs[0].substr(0, longest);
}
++longest;
}
return strs[0];
}
相关主题
discuss an array rearrange question请教电面试题
interview中被问到没有的做过的东西怎么回答?这个题怎么做啊?
心情坏到极点关于2D, 3D平面上点的问题?
进入JobHunting版参与讨论
j******2
发帖数: 362
11
咱们的M是一个意思。不管你咋么排,一旦扫到最短串的末梢,就终结了啊?

【在 h****n 的大作中提到】
: 你的M是指什么呀,我的M是指字符串的长度 avg M是指字符串的平均长度
: 具体M是多少和你字符串的排列是有关系的
: 考虑两种极端的情况,假设所有字符串的字符都是同一个字符,
: 第一种所有字符按照长度从长排到短,那么比较下来的长度就是AVG M
: 第二种就是所有字符按照长度从短到长排,那么比较下来的长度就是MIN M
: divide conquer的复杂度可以用主定理来分析的,主要看最终的复杂度看分支数量,子
: 问题规模和合并操作的开销
: T(n)=a(T/b) + O(n^d)
: T(n)= n^d if d > logb a
: = n^(logb a) if d < logb a

h****n
发帖数: 1093
12
假如从最长M排到最短1,那么最坏情况下 第一次需要比较M-1次,第二次需要比较M-2
次 以此类推

【在 j******2 的大作中提到】
: 咱们的M是一个意思。不管你咋么排,一旦扫到最短串的末梢,就终结了啊?
d******i
发帖数: 76
13
worst case = N * M, N 是元素个数,M是最后结果长度。
j******2
发帖数: 362
14
是N次不是M次吧?

2

【在 h****n 的大作中提到】
: 假如从最长M排到最短1,那么最坏情况下 第一次需要比较M-1次,第二次需要比较M-2
: 次 以此类推

h****n
发帖数: 1093
15
不对吧。。
考虑这样的例子
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
...
a
最后一行只有一个a,前面都是这么一大串
最后的结果长度是1 显然worst case不是N*1

【在 d******i 的大作中提到】
: worst case = N * M, N 是元素个数,M是最后结果长度。
h****n
发帖数: 1093
16
我表达不清吧
我指的是下面这样子的一个例子
aaaaa
aaaa
aaa
aa
a
第一次需要比较4次,第二次需要比较3次,以此类推

【在 j******2 的大作中提到】
: 是N次不是M次吧?
:
: 2

j******2
发帖数: 362
17
这种情况第二次扫完就结束拉。

【在 h****n 的大作中提到】
: 我表达不清吧
: 我指的是下面这样子的一个例子
: aaaaa
: aaaa
: aaa
: aa
: a
: 第一次需要比较4次,第二次需要比较3次,以此类推

d******i
发帖数: 76
18
错了,worst case = N *(M + 1)
h****n
发帖数: 1093
19
恩我们的扫法不一样 我是一个字符串一个字符串扫 你是一个字符一个字符扫 你那种
更好点

【在 j******2 的大作中提到】
: 这种情况第二次扫完就结束拉。
1 (共1页)
进入JobHunting版参与讨论
相关主题
dynamic programming 和divide and conquer区别几种linked List (array) merge 的复杂度(附个人体会)
一个面试题discuss an array rearrange question
请教一下各位大牛,开放性问题的事情。interview中被问到没有的做过的东西怎么回答?
求Largest Rectangle in Histogram的DP解法心情坏到极点
做了一道挺有意思的题请教电面试题
Reverse String 有 O(logn)的方法么?这个题怎么做啊?
facebook intern 面经关于2D, 3D平面上点的问题?
re: 面试归来,上面经回馈各位战友求 Maximum Subarray divide and conquer 解法
相关话题的讨论汇总
话题: strs话题: longest话题: 复杂度