农民代表
- 积分
- 5094
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2014-5-14
- 最后登录
- 1970-1-1
|
注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
本帖最后由 jy_121 于 2015-8-24 23:10 编辑
这是lintcode上的一道原题,大意就是把图中相连通的部分放到一个集合里输出:
http://www.lintcode.com/zh-cn/pr ... e-undirected-graph/
我是用了BFS来做,但是其中一个test case里一个集合中的顺序和答案不一样,报错了。但是题目里好像没有这样的要求,不知道是为什么。
代码如下:- public List<List<Integer>> connectedSet(ArrayList<UndirectedGraphNode> nodes) {
- // Write your code here
- List<List<Integer>> result = new ArrayList<List<Integer>> ();
- Queue<UndirectedGraphNode> q = new LinkedList<UndirectedGraphNode>();
- HashMap<UndirectedGraphNode, Integer> map
- = new HashMap<UndirectedGraphNode, Integer>();
-
- for(int i = 0; i < nodes.size(); i++){
- if(map.containsKey(nodes.get(i))){
- continue;
- }
- ArrayList<Integer> list = new ArrayList<Integer>();
- q.offer(nodes.get(i));
- map.put(nodes.get(i), 1);
- while(!q.isEmpty()){
- UndirectedGraphNode node2 = q.poll();
- if(!list.contains(node2.label)){
- list.add(node2.label);
- }
-
- for(UndirectedGraphNode n : node2.neighbors){
- if(!map.containsKey(n)){
- q.offer(n);
- list.add(n.label);
- map.put(n, 1);
- }
- }
-
- }
-
- result.add(list);
-
- }
- return result;
-
- }
复制代码 这是报错时的截图,谢谢大家了
|
上一篇: 求问一个关于time complexity的概念问题下一篇: 请教一道面经
|