Redian新闻
>
我女儿刚才看书看哭了。
avatar
我女儿刚才看书看哭了。# Parenting - 为人父母
z*e
1
这题也够坑爹的
public class Solution {

public ArrayList> findLadders(String start, String end
, HashSet dict) {
// Start typing your Java solution below
// DO NOT write main() function
dict.add(start);
dict.add(end);

HashMap> routs = new HashMap>();

this.generateRouts(dict, routs);


ArrayList> result = new ArrayList>>();

LinkedList queue = new LinkedList();
queue.add(new Node(null, 0, start));

int previousLevel = 0;
Map visited = new HashMap();

while(!queue.isEmpty()){
Node node = queue.pollFirst();
if(node.val.equals(end)){
if(previousLevel == 0 || node.level == previousLevel){
this.generateResults(node, result);
}else{
break;
}
}else{
Set values = routs.get(node.val);

if(values == null || values.size() == 0) continue;

Set removeSet = new HashSet();

for(String value:values){

if(visited.containsKey(value)&&node.level+1>visited.get(
value)){
removeSet.add(value);
}else{
queue.add(new Node(node, node.level+1,value));
visited.put(value,node.level+1);
if(routs.containsKey(value)) routs.get(value).remove
(node.val);
}

}

values.removeAll(removeSet);
}
}

return result;

}

private void generateResults(Node node, ArrayList>
result){
ArrayList list = new ArrayList();
while(node!=null){
list.add(0,node.val);
node = node.parent;
}
result.add(list);
}

public void generateRouts(HashSet set, HashMapString>> routs){

for(String string:set){

char[] c = string.toCharArray();

for(int i=0;ichar old = c[i];

for(char t = 'a';t<='z';t++){
if(t==old) continue;
c[i] = t;
String temp = new String(c);
if(set.contains(temp)){
HashSet s = routs.get(string);
if(s == null){
s = new HashSet();
routs.put(string, s);
}
s.add(temp);
}
}

c[i] = old;
}
}
}

}
class Node{
Node parent;
int level;
String val;

public Node(Node parent, int level, String val){
this.parent = parent;
this.level = level;
this.val = val;
}
}
avatar
c*e
2
做RAZ-KIDS,一本书讲的是一个小姑娘爸爸是军人,然后不得不离开家人的故事。然后
小妞竟然哭得泣不成声。忙问她为啥,她说这个故事太让人难过了。55555.
6岁多的娃竟然这么情感丰富。ORZ。
不过也是遗传,我现在都大妈年龄了看狗血电视剧还会经常哭,哎。
avatar
c*p
3
这题因为恶心我一直留着没写哈哈哈哈
avatar
H*1
4
赞感情丰富细腻的小姑娘 :D

【在 c********e 的大作中提到】
: 做RAZ-KIDS,一本书讲的是一个小姑娘爸爸是军人,然后不得不离开家人的故事。然后
: 小妞竟然哭得泣不成声。忙问她为啥,她说这个故事太让人难过了。55555.
: 6岁多的娃竟然这么情感丰富。ORZ。
: 不过也是遗传,我现在都大妈年龄了看狗血电视剧还会经常哭,哎。

avatar
c*e
5
米高兄给点解释?

end

【在 z****e 的大作中提到】
: 这题也够坑爹的
: public class Solution {
:
: public ArrayList> findLadders(String start, String end
: , HashSet dict) {
: // Start typing your Java solution below
: // DO NOT write main() function
: dict.add(start);
: dict.add(end);
:

avatar
c*e
6
谢谢夸奖:)
看来我还是小看她了,本来以为小p孩应该只为没吃到糖果,没出去玩才会哭鼻子呢。
没想到会被故事感动哭。孩子真的是一天天长大了,一天天超过我们这些当父母的预料
之外啊。
实话说,真舍不得她长这么快。小孩子多可爱啊。

【在 H*****1 的大作中提到】
: 赞感情丰富细腻的小姑娘 :D
avatar
z*e
7
Mark,晚一点有时间也来写一下.

end

【在 z****e 的大作中提到】
: 这题也够坑爹的
: public class Solution {
:
: public ArrayList> findLadders(String start, String end
: , HashSet dict) {
: // Start typing your Java solution below
: // DO NOT write main() function
: dict.add(start);
: dict.add(end);
:

avatar
s*j
8
是好事还是坏事?

【在 c********e 的大作中提到】
: 做RAZ-KIDS,一本书讲的是一个小姑娘爸爸是军人,然后不得不离开家人的故事。然后
: 小妞竟然哭得泣不成声。忙问她为啥,她说这个故事太让人难过了。55555.
: 6岁多的娃竟然这么情感丰富。ORZ。
: 不过也是遗传,我现在都大妈年龄了看狗血电视剧还会经常哭,哎。

avatar
z*3
9
这是新的代码
建 route 的时候,不从字典里面找,而是挨个替换字符串的char,换成其他char,组
建成新字符串,然后再去看字典里有没有,有的话,放到set里去,再把set放到map里
,每个pair表示从key string出发,能够转换的点的集合
然后从start开始找,用linkedlist,不用queue,queue是二叉树,效率低,用
linkedlist快,bfs都用linkedlist,先进先出,linkedlist的pollfirst效率高
然后建立一个类,node,这个node记录当前的string,以及上一个string,还有当前
路径长度
然后方法主体,每次把当前string对应的点取出来,然后看能走到那些点,挨个对比这
些点,看是不是end string,如果是,则表示找到,那就记录当前长度,因为还有可能
有相同长度的解,然后继续,如果不是end string,则查找visitedmap,看是否访问过
,如果访问过,比较当前路径长度跟上次访问的长度,如果上次访问的长度更短,则把
set里面这个node给移除,要不然会产生死循环,这里还要避开并发修改的问题,如果
跟上次访问的长度相同或者没有访问过,则把这些点加到queue最后,直到queue为空
感觉这题是leetcode oj里面最难的了,不过大oj不用jit就能过,这倒是比其他题要好点
public class Solution {
public ArrayList> findLadders(String start, String end,
HashSet dict) {
// Start typing your Java solution below
// DO NOT write main() function
dict.add(start);
dict.add(end);

HashMap> routs = new HashMapString>>();

this.generateRouts(dict, routs);


ArrayList> result = new ArrayList
>();

LinkedList queue = new LinkedList();
queue.add(new Node(null, 0, start));

int previousLevel = 0;
Map visited = new HashMap();

while(!queue.isEmpty()){
Node node = queue.pollFirst();
if(node.val.equals(end)){
if(previousLevel == 0 || node.level == previousLevel){
this.generateResults(node, result);
}else{
break;
}
}else{
Set values = routs.get(node.val);

if(values == null || values.size() == 0) continue;

Set removeSet = new HashSet();

for(String value:values){

if(visited.containsKey(value)&&node.level+1>visited.get(
value)){
removeSet.add(value);
}else{
queue.add(new Node(node, node.level+1,value));
visited.put(value,node.level+1);
}
}

values.removeAll(removeSet);
}
}

return result;

}
private void generateResults(Node node, ArrayList>
result){
ArrayList list = new ArrayList();
while(node!=null){
list.add(0,node.val);
node = node.parent;
}
result.add(list);
}
public void generateRouts(HashSet set, HashMapString>> routs){

for(String string:set){

char[] c = string.toCharArray();

for(int i=0;ichar old = c[i];

for(char t = 'a';t<='z';t++){
if(t==old) continue;
c[i] = t;
String temp = new String(c);
if(set.contains(temp)){
HashSet s = routs.get(string);
if(s == null){
s = new HashSet();
routs.put(string, s);
}
s.add(temp);
}
}

c[i] = old;
}
}
}
}
class Node{
Node parent;
int level;
String val;

public Node(Node parent, int level, String val){
this.parent = parent;
this.level = level;
this.val = val;
}
}

【在 c********e 的大作中提到】
: 米高兄给点解释?
:
: end

avatar
i*t
10
演员天赋
avatar
z*3
11
这题用了pass by reference和linkedlist
最近讨论的几个topic这题里面做了一个小汇总,呼呼
avatar
i*t
12
哎。。。我家两岁娃儿,我给他讲故事,讲到书里小熊的妈妈送小熊去了daycare,小
熊在daycare里想妈妈;人家还瞬间红了眼圈呢。。。

【在 c********e 的大作中提到】
: 做RAZ-KIDS,一本书讲的是一个小姑娘爸爸是军人,然后不得不离开家人的故事。然后
: 小妞竟然哭得泣不成声。忙问她为啥,她说这个故事太让人难过了。55555.
: 6岁多的娃竟然这么情感丰富。ORZ。
: 不过也是遗传,我现在都大妈年龄了看狗血电视剧还会经常哭,哎。

avatar
c*e
13
感谢啊!

【在 z*******3 的大作中提到】
: 这是新的代码
: 建 route 的时候,不从字典里面找,而是挨个替换字符串的char,换成其他char,组
: 建成新字符串,然后再去看字典里有没有,有的话,放到set里去,再把set放到map里
: ,每个pair表示从key string出发,能够转换的点的集合
: 然后从start开始找,用linkedlist,不用queue,queue是二叉树,效率低,用
: linkedlist快,bfs都用linkedlist,先进先出,linkedlist的pollfirst效率高
: 然后建立一个类,node,这个node记录当前的string,以及上一个string,还有当前
: 路径长度
: 然后方法主体,每次把当前string对应的点取出来,然后看能走到那些点,挨个对比这
: 些点,看是不是end string,如果是,则表示找到,那就记录当前长度,因为还有可能

avatar
j*p
14
小姑娘是不是感情丰富很多?
我家娃才2岁出头,看动画片,里面的角色伤心了哭了,她也跟着伤心。
avatar
w*n
15
代码写这么长的,面试不太会考到吧。只有一小时而已
不好意思,顺便问问leetcode 129是什么意思?
题目没有序号啊
你们说的刷leetcode, 是主页上的70多道题,
leetcode.com
还是也包括discussion里的200多个问题
http://discuss.leetcode.com/
新手求指点
多谢!

【在 z*******3 的大作中提到】
: 这是新的代码
: 建 route 的时候,不从字典里面找,而是挨个替换字符串的char,换成其他char,组
: 建成新字符串,然后再去看字典里有没有,有的话,放到set里去,再把set放到map里
: ,每个pair表示从key string出发,能够转换的点的集合
: 然后从start开始找,用linkedlist,不用queue,queue是二叉树,效率低,用
: linkedlist快,bfs都用linkedlist,先进先出,linkedlist的pollfirst效率高
: 然后建立一个类,node,这个node记录当前的string,以及上一个string,还有当前
: 路径长度
: 然后方法主体,每次把当前string对应的点取出来,然后看能走到那些点,挨个对比这
: 些点,看是不是end string,如果是,则表示找到,那就记录当前长度,因为还有可能

avatar
a*n
16
小孩子有时候哭点挺低的,记得我儿子2岁时候一次偶然看小兔乖乖,把门开开的视频,一
下子哭得泣不成声哄都哄不住,问他为毛哭,就抽抽噎噎地说"小兔子找不到妈妈了".
关键是,那天忙忙叨叨收拾东西下午要坐飞机回来,他哭个不停,我就突然想起老人说出
远门前孩子哭怕不是好兆头...心里那个七上八下的,穷人不舍得改机票,还是上了飞机.
..
avatar
t*a
17
楼主说的这题实际上是第127题
刚做了个clojure的解法,比java要短小很多。
可惜不能在leetcode上测试大数据,真心希望leetcode支持C/C++/Java以外的语言。
(defn word-map [dict]
(let [g (group-by first (for [word1 dict
word2 dict
:let [wd (word-dist word1 word2)]
:when (== wd 1)]
[word1 word2]))
ks (keys g)
vs (map (partial mapv second) (vals g))]
(zipmap ks vs)))
(defn word-dist [word1 word2]
(reduce + (map (fn [ch1 ch2] (if (= ch1 ch2) 0 1)) (vec word1) (vec word2)
)))
(defn next-step [path word-map]
(let [node (peek path)
neighbors (vec (clojure.set/difference (set (get word-map node)) (
set path)))
new-paths (map (partial conj path) neighbors)]
new-paths))
(defn batch-next-step [paths word-map]
(mapcat #(next-step % word-map) paths))
(defn bfs [start end dict]
(let [wm (word-map (concat dict [start end]))
bns #(batch-next-step % wm)
last-steps (first (drop-while (fn [paths]
(and (not (empty? paths))
(not (contains? (set (map peek
paths)) end)))) (iterate bns [[start]])))]
(filter #(= end (peek %)) last-steps)))
(bfs "hit" "cog" ["hot","dot","dog","lot","log"]) ; (["hit" "hot" "dot" "dog
" "cog"] ["hit" "hot" "lot" "log" "cog"])
avatar
c*i
18
你还真钱咪呀。。。笑的肚子疼。

机.

【在 a****n 的大作中提到】
: 小孩子有时候哭点挺低的,记得我儿子2岁时候一次偶然看小兔乖乖,把门开开的视频,一
: 下子哭得泣不成声哄都哄不住,问他为毛哭,就抽抽噎噎地说"小兔子找不到妈妈了".
: 关键是,那天忙忙叨叨收拾东西下午要坐飞机回来,他哭个不停,我就突然想起老人说出
: 远门前孩子哭怕不是好兆头...心里那个七上八下的,穷人不舍得改机票,还是上了飞机.
: ..

avatar
z*3
19
所以说某些人脑袋里就知道比代码行数
只有一个维度,哪里能比得上车板
人家好歹还有两个维度:安全和价格

【在 t****a 的大作中提到】
: 楼主说的这题实际上是第127题
: 刚做了个clojure的解法,比java要短小很多。
: 可惜不能在leetcode上测试大数据,真心希望leetcode支持C/C++/Java以外的语言。
: (defn word-map [dict]
: (let [g (group-by first (for [word1 dict
: word2 dict
: :let [wd (word-dist word1 word2)]
: :when (== wd 1)]
: [word1 word2]))
: ks (keys g)

avatar
G*r
20
我家男娃也这样,超级敏感,不过也怪有个不争气的妈,读书读着读着自己先哭起来料
avatar
z*3
21
这题完全是用来对付leetcode用的
平常不太会写成这样
leetcode上的难度比面试时候要难,尤其是难题
当作练习蛮好
online judge,按照日期降序排列
第一题是最下面那题

【在 w**n 的大作中提到】
: 代码写这么长的,面试不太会考到吧。只有一小时而已
: 不好意思,顺便问问leetcode 129是什么意思?
: 题目没有序号啊
: 你们说的刷leetcode, 是主页上的70多道题,
: leetcode.com
: 还是也包括discussion里的200多个问题
: http://discuss.leetcode.com/
: 新手求指点
: 多谢!

avatar
H*1
22
我家闺女比较心硬 @[email protected]
以前给她讲 llama llama misses mama那本书,是llama去上学,想妈妈哭了
闺女说“It's ok that you miss your mom, but don't whine. Go play with your
friends.”

【在 i****t 的大作中提到】
: 哎。。。我家两岁娃儿,我给他讲故事,讲到书里小熊的妈妈送小熊去了daycare,小
: 熊在daycare里想妈妈;人家还瞬间红了眼圈呢。。。

avatar
a*n
23
是啊,穷还怕死...

【在 c********i 的大作中提到】
: 你还真钱咪呀。。。笑的肚子疼。
:
: 机.

avatar
c*7
24
我儿子也是三岁多的时候看机器猫动画片看哭了,因为里面的小恐龙找不到妈妈了。这
也像我。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。