zoukankan      html  css  js  c++  java
  • lintcode618- Search Graph Nodes- medium

    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

    直接BFS。queue+set。API第一个给的graph冗余的不用管。

    找一个最近的不用分层遍历,如果要你找到所有的话需要分层,取size套for。

    /**
     * Definition for graph node.
     * class UndirectedGraphNode {
     *     int label;
     *     ArrayList<UndirectedGraphNode> neighbors;
     *     UndirectedGraphNode(int x) { 
     *         label = x; neighbors = new ArrayList<UndirectedGraphNode>(); 
     *     }
     * };
     */
    
    
    public class Solution {
        /*
         * @param graph: a list of Undirected graph node
         * @param values: a hash mapping, <UndirectedGraphNode, (int)value>
         * @param node: an Undirected graph node
         * @param target: An integer
         * @return: a node
         */
        public UndirectedGraphNode searchNode(ArrayList<UndirectedGraphNode> graph,
                                              Map<UndirectedGraphNode, Integer> values,
                                              UndirectedGraphNode node,
                                              int target) {
            // write your code here
            if (graph == null || node == null || values == null) {
                return null;
            }
            Queue<UndirectedGraphNode> queue = new LinkedList<>();
            Set<UndirectedGraphNode> set = new HashSet<>();
            
            queue.offer(node);
            set.add(node);
            
            while (!queue.isEmpty()) {
                UndirectedGraphNode crt = queue.poll();
                if (values.get(crt) == target) {
                    return crt;
                }
                for (UndirectedGraphNode neighbor : crt.neighbors) {
                    if (!set.contains(neighbor)) {
                        queue.offer(neighbor);
                        set.add(neighbor);
                    }
                }
            }
            return null;
        }
    }
  • 相关阅读:
    winform+cefSharp实现窗体加载浏览器
    C# 实现Mqqtnet 客户端,订阅发布信息
    winform+CefSharp 实现和js交互
    C# 读取INI文件
    H5+asp.net 微信开发 遇到过的坑
    C#读取Excel文件,准换为list
    vmware pro 15.5.5 官方下载地址
    IOS部分APP使用burpsuite抓不到包原因
    CVE-2020-0796 SMBv3本地提权
    网络摄像头rtsp协议登录认证
  • 原文地址:https://www.cnblogs.com/jasminemzy/p/7726906.html
Copyright © 2011-2022 走看看