• [LintCode] 618 Search Graph Nodes 解题报告


    Description
    Given a undirected graph, a node and a target, return the nearest node to given node which value of it is target, return NULL if you can't find.

    There is a mapping store the nodes' values in the given parameters.

    Notice
    It's guaranteed there is only one available solution


    Example
    2------3 - 5
             |     |
             |     |
             |     |
             |     |
             1 -- 4
    Give a node 1, target is 50

    there a hash named values which is [3,4,10,50,50], represent:
    Value of node 1 is 3
    Value of node 2 is 4
    Value of node 3 is 10
    Value of node 4 is 50
    Value of node 5 is 50

    Return node 4

    5/13/2017

    算法班,未经验证

    不是很明白label和values的关系

     1 /**
     2  * Definition for graph node.
     3  * class UndirectedGraphNode {
     4  *     int label;
     5  *     ArrayList<UndirectedGraphNode> neighbors;
     6  *     UndirectedGraphNode(int x) { 
     7  *         label = x; neighbors = new ArrayList<UndirectedGraphNode>(); 
     8  *     }
     9  * };
    10  */
    11 public class Solution {
    12     /**
    13      * @param graph a list of Undirected graph node
    14      * @param values a hash mapping, <UndirectedGraphNode, (int)value>
    15      * @param node an Undirected graph node
    16      * @param target an integer
    17      * @return the a node
    18      */
    19     public UndirectedGraphNode searchNode(ArrayList<UndirectedGraphNode> graph,
    20                                           Map<UndirectedGraphNode, Integer> values,
    21                                           UndirectedGraphNode node,
    22                                           int target) {
    23         // Write your code here
    24         if (graph == null) return ret;
    25         UndirectedGraphNode ret = null;
    26         Set<UndirectedGraphNode> set = new HashSet<UndirectedGraphNode>();
    27 
    28         Queue<UndirectedGraphNode> queue = new LinkedList<UndirectedGraphNode>();
    29         queue.offer(node);
    30         while (!queue.isEmpty()) {
    31             UndirectedGraphNode t = queue.poll();
    32             if (values.get(t) == target) {
    33                 return t;
    34             }
    35             for (UndirectedGraphNode n: t.neighbors) {
    36                 if (!set.contains(n)) {
    37                     set.add(n);
    38                     queue.offer(n);
    39                 }
    40             }
    41         }
    42         return null;
    43     }
    44 }
  • 相关阅读:
    75分以下是文盲
    罗永浩最近怎么了
    北京奥运会赛事项目竞赛日程表
    从今天开始我的blog增加计数器
    07工作总结
    五道脑筋测试题,全答对的是天才
    转:国家名字的含义
    我的新装备双狂
    上海海鲜自助:喜多屋vs古象大酒店
    因为有了爱
  • 原文地址:https://www.cnblogs.com/panini/p/6850882.html
Copyright © 2020-2023  润新知