DlnaServer们在局域网经常消失# PDA - 掌中宝
N*6
1 楼
看到板上有网友报面经,往前翻翻发现大家讨论过很多次
小弟有几个问题
String a 长度 m
String b 长度 n
String c 长度 m+n
verify c 是不是a 和 b的interleaving
1. 这道题用DP的话时间上应该是O(m*n),空间上填2d table的话是O(m*n)
如果重复利用行的话可以到O(n)
2. 如果是Recursion的话复杂度是多少呢?我不理解的是如果c
当前字符和a的当前字符以及b的当前字符都一样的话,要分两路
去查找,当然第一路如果返回true的话第二路就没必要了,可是
一个比较极端的例子
a: aaaaa
b: aaaad
c: aaaadaaaaa
如果算法在遇到相同的字符是先假定是从a string来的,这个例子
就会非常time consuming,需要不停back tracking,请问这种情况
下recursion的复杂度是多少呢?
昨天在leetcode上用recursion发现small data可以过,large的
就超时了
3. 如果递归,我个人觉得不应该在开始比较字符串长度是否相等吧?
因为每次获取字符串长度都要O(m)或者O(n)的时间,应该假设这两个
长度是已知或者只在最开始的时候比较一次,大家觉得呢?
小弟有几个问题
String a 长度 m
String b 长度 n
String c 长度 m+n
verify c 是不是a 和 b的interleaving
1. 这道题用DP的话时间上应该是O(m*n),空间上填2d table的话是O(m*n)
如果重复利用行的话可以到O(n)
2. 如果是Recursion的话复杂度是多少呢?我不理解的是如果c
当前字符和a的当前字符以及b的当前字符都一样的话,要分两路
去查找,当然第一路如果返回true的话第二路就没必要了,可是
一个比较极端的例子
a: aaaaa
b: aaaad
c: aaaadaaaaa
如果算法在遇到相同的字符是先假定是从a string来的,这个例子
就会非常time consuming,需要不停back tracking,请问这种情况
下recursion的复杂度是多少呢?
昨天在leetcode上用recursion发现small data可以过,large的
就超时了
3. 如果递归,我个人觉得不应该在开始比较字符串长度是否相等吧?
因为每次获取字符串长度都要O(m)或者O(n)的时间,应该假设这两个
长度是已知或者只在最开始的时候比较一次,大家觉得呢?