由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 不明白leetcode OJ wordladder 2 总是 Time Limit Exceeded
相关主题
leetcode 上 wordladderII 求教ZigZag 又读不懂题了,求助!
微软有组在招new grad software engineer吗?leetcode上zigzag converstion那题怎么才能通过large?
Word ladder II 感觉算法已经是最优了,但是过不了大测试,能不能帮忙看看?leetcode number of islands为什么不能用BFS?
word ladder ii 谁给个大oj不超时的?Word Ladder 这样写时间空间复杂度是多少? 谢谢
leetcode #220很好Memory Limit Exceeded 错误
问一道A家的面试题word ladder 时间空间复杂度是多少, bfs 解的
发个evernote的code challengeSecond round phone interview with eBay
问一个google面经题【地里转得】求讨论关于Leetcode的WordLadder I的DFS解法
相关话题的讨论汇总
话题: string话题: record话题: list话题: linkedlist话题: new
进入JobHunting版参与讨论
1 (共1页)
c*****e
发帖数: 3226
1
public class Solution {
class Record {
Record prev;
String cur;

public Record(Record prev, String cur) {
this.prev = prev;
this.cur = cur;
}

}
public List> findLadders(String start, String end, Set<
String> dict) {

List> r = new LinkedList>();

if (start == null || end == null || dict == null || start.length() =
= 0 || start.length() != end.length()) {
return r;
}

Queue p = new LinkedList();
Set used = new TreeSet();

p.add(new Record(null, start));

used.add(start);

while(!p.isEmpty()) {
Queue p2 = new LinkedList();
Set level_used = new TreeSet();

for(Record record: p) {
String cur = record.cur;
for (int i = 0; i < cur.length(); i++) {
String left = cur.substring(0, i);
String right = cur.substring(i+1);
for (char c='a'; c <='z'; c++) {
if (c != cur.charAt(i)) {
String n = left + String.valueOf(c) + right;

if (n.equals(end)) {
List path = new LinkedList();
path.add(end);
Record r0 = record;
while(r0 != null) {
path.add(0, r0.cur);
r0 = r0.prev;
}
r.add(path);
} else if (dict.contains(n) && !used.contains(n)
) {
p2.add(new Record(record, n));

level_used.add(n);
}
}
}
}
}

if (!r.isEmpty()) return r;
p = p2;
used.addAll(level_used);
}
return r;
}
}
s******n
发帖数: 226
2
双向
c*****e
发帖数: 3226
3
leetcode 狗屎,
我把建立新的string 换成 这个就过了: String n = replace(cur, i, c);
private String replace(String str, int index, char c) {
StringBuilder sb = new StringBuilder(str);
sb.setCharAt(index, c);
return sb.toString();
}

【在 c*****e 的大作中提到】
: public class Solution {
: class Record {
: Record prev;
: String cur;
:
: public Record(Record prev, String cur) {
: this.prev = prev;
: this.cur = cur;
: }
:

c*********w
发帖数: 65
4
String.substring 的实现在java 1.7里被改了,本来是 constant time,现在是
linear.
和GC有关。

【在 c*****e 的大作中提到】
: leetcode 狗屎,
: 我把建立新的string 换成 这个就过了: String n = replace(cur, i, c);
: private String replace(String str, int index, char c) {
: StringBuilder sb = new StringBuilder(str);
: sb.setCharAt(index, c);
: return sb.toString();
: }

j******o
发帖数: 4219
5
leetcode这种只要最佳解的做法和国人的心态一样。
1 (共1页)
进入JobHunting版参与讨论
相关主题
求讨论关于Leetcode的WordLadder I的DFS解法leetcode #220很好
G面经问一道A家的面试题
一道电面题,分享下, 这个题应该用哪几个data structure?发个evernote的code challenge
text editor问一个google面经题【地里转得】
leetcode 上 wordladderII 求教ZigZag 又读不懂题了,求助!
微软有组在招new grad software engineer吗?leetcode上zigzag converstion那题怎么才能通过large?
Word ladder II 感觉算法已经是最优了,但是过不了大测试,能不能帮忙看看?leetcode number of islands为什么不能用BFS?
word ladder ii 谁给个大oj不超时的?Word Ladder 这样写时间空间复杂度是多少? 谢谢
相关话题的讨论汇总
话题: string话题: record话题: list话题: linkedlist话题: new