Redian新闻
>
anybody say say cisco?
avatar
anybody say say cisco?# Stock
g*b
1
第一遍抄的网上的BFS写法
public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
if(node == null) return null;
UndirectedGraphNode cnode = new UndirectedGraphNode(node.label);
Map visited = new HashMap<
UndirectedGraphNode, UndirectedGraphNode>();
visited.put(node, cnode);
Queue queue = new LinkedList<
UndirectedGraphNode>();
queue.add(node);
while(!queue.isEmpty()){
UndirectedGraphNode cur = queue.poll();
for(UndirectedGraphNode n : cur.neighbors){
if(visited.keySet().contains(n)){
visited.get(cur).neighbors.add(visited.get(n));
}else{
UndirectedGraphNode cn = new UndirectedGraphNode(n.label
);
visited.put(n, cn);
visited.get(cur).neighbors.add(cn);
queue.add(n);
}
}
}

return cnode;
}
第二遍自己写的时候,写了recursive function。仔细想了想觉得和BFS没有本质区别
,实际时间也差不多,不知道自己有没有想岔?求指导。
public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
if(node == null) return null;
Map map = new HashMap<
UndirectedGraphNode, UndirectedGraphNode>();
return cloneNode(node, map);
}

private UndirectedGraphNode cloneNode(UndirectedGraphNode node, Map<
UndirectedGraphNode, UndirectedGraphNode> map) {
UndirectedGraphNode copy;
if(map.keySet().contains(node)){
copy = map.get(node);
}else{
copy = new UndirectedGraphNode(node.label);
map.put(node, copy);
}
for(UndirectedGraphNode n : node.neighbors){
if(map.keySet().contains(n)) copy.neighbors.add(map.get(n));
else copy.neighbors.add(cloneNode(n, map));
}
return copy;
}
avatar
r*u
2
i feel it is import to Nasdaq
avatar
l*a
3
着两行可以合并
if(map.keySet().contains(n)) copy.neighbors.add(map.get(n));
else copy.neighbors.add(cloneNode(n, map));

HashMap<

【在 g****b 的大作中提到】
: 第一遍抄的网上的BFS写法
: public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
: if(node == null) return null;
: UndirectedGraphNode cnode = new UndirectedGraphNode(node.label);
: Map visited = new HashMap<
: UndirectedGraphNode, UndirectedGraphNode>();
: visited.put(node, cnode);
: Queue queue = new LinkedList<
: UndirectedGraphNode>();
: queue.add(node);

avatar
l*a
4
发现你下面这个写法很奇特
map.keySet().contains(n)
you can use map.containsKey(n) directly

HashMap<

【在 g****b 的大作中提到】
: 第一遍抄的网上的BFS写法
: public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
: if(node == null) return null;
: UndirectedGraphNode cnode = new UndirectedGraphNode(node.label);
: Map visited = new HashMap<
: UndirectedGraphNode, UndirectedGraphNode>();
: visited.put(node, cnode);
: Queue queue = new LinkedList<
: UndirectedGraphNode>();
: queue.add(node);

avatar
g*b
5
OMG谢谢指出。。。。。。原来一直这么写。。。。。太无语了。。。。。。

【在 l*****a 的大作中提到】
: 发现你下面这个写法很奇特
: map.keySet().contains(n)
: you can use map.containsKey(n) directly
:
: HashMap<

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。