博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode----133. Clone Graph
阅读量:4113 次
发布时间:2019-05-25

本文共 1113 字,大约阅读时间需要 3 分钟。

链接:

大意:

给定一个图节点node,要求深度复制整个图。给定图的数据结构如下:

class Node {    public int val;    public List
neighbors; public Node() {} public Node(int _val,List
_neighbors) { val = _val; neighbors = _neighbors; }};

例子:

思路:

深度复制,使用dfs以及一个map保存图节点值到图节点的映射。

若当前图节点以存在(即map中存在相应键为图节点值),则返回该图节点的引用;否则新建图节点。

代码:

// 每个节点的值都是不一样的? 每个节点的值都不一样  不然怎么访问给定值的邻居?class Solution {    public Node cloneGraph(Node node) {        Node n = new Node(node.val, new ArrayList<>());        Map
map = new HashMap<>(); map.put(node.val, n); dfs(node, n, map); return n; } // 使用递归dfs构造cloneGraph public void dfs(Node nodeOld, Node nodeNew, Map
map) { for (Node node : nodeOld.neighbors) { if (!map.containsKey(node.val)) { Node n = new Node(node.val, new ArrayList<>()); map.put(node.val, n); nodeNew.neighbors.add(n); dfs(node, map.get(node.val), map); } else { nodeNew.neighbors.add(map.get(node.val)); } } }}

结果:

结论:

算法+数据结构=程序 

 

 

 

转载地址:http://jxesi.baihongyu.com/

你可能感兴趣的文章
初试visual studio2012的新型数据库LocalDB
查看>>
启动 LocalDB 和连接到 LocalDB
查看>>
Palindrome Number --回文整数
查看>>
Reverse Integer--反转整数
查看>>
Container With Most Water --装最多水的容器(重)
查看>>
Longest Common Prefix -最长公共前缀
查看>>
Letter Combinations of a Phone Number
查看>>
Single Number II --出现一次的数(重)
查看>>
Valid Parentheses --括号匹配
查看>>
Remove Element--原地移除重复元素
查看>>
Remove Duplicates from Sorted Array--从有序数组中移除重复元素
查看>>
Count and Say
查看>>
Gas Station
查看>>
Palindrome Partitioning --回文切割 深搜(重重)
查看>>
Valid Palindrome 简单的回文判断
查看>>
Pascal's Triangle -- 生成杨辉三角
查看>>
Pascal's Triangle II 生成杨辉三角中的某行
查看>>
Minimum Depth of Binary Tree -- 二叉树的最小深度 DFS 加剪枝
查看>>
Climbing Stairs 爬楼梯方法 动态规划
查看>>
Merge Two Sorted Lists 合并两个有序链表
查看>>