网上建设银行网站企业网站设计布局

张小明 2025/12/28 17:02:16
网上建设银行网站,企业网站设计布局,网站怎么更改后台登陆密码,海珠区建设和水务局网站所有可能的路径 问题描述 给你一个有 n 个节点的有向无环图#xff08;DAG#xff09;#xff0c;节点编号从 0 到 n - 1。给你一个二维数组 graph 表示图的邻接表#xff0c;其中 graph[i] 是一个节点数组#xff0c;表示从节点 i 出发可以到达的所有节点。 请你找出从节…所有可能的路径问题描述给你一个有n个节点的有向无环图DAG节点编号从0到n - 1。给你一个二维数组graph表示图的邻接表其中graph[i]是一个节点数组表示从节点i出发可以到达的所有节点。请你找出从节点 0 到节点 n-1 的所有路径并返回这些路径。注意图中不包含自环和平行边且保证是无环图。示例输入: graph [[1,2],[3],[3],[]] 输出: [[0,1,3],[0,2,3]] 解释: 从0到3有两条路径: 0-1-3 和 0-2-3。算法思路经典的图遍历问题核心有向无环图DAG保证不会有无限递归每条路径都是有限的路径记录需要记录从起点到当前节点的完整路径回溯算法到达终点时保存路径然后回溯继续探索其他路径方法深度优先搜索DFS 回溯广度优先搜索BFS动态规划由于需要返回所有路径而不是计数不适合代码实现方法一DFS 回溯importjava.util.*;classSolution{/** * 使用DFS和回溯找到从0到n-1的所有路径 * * param graph 邻接表表示的有向无环图 * return 所有从0到n-1的路径列表 */publicListListIntegerallPathsSourceTarget(int[][]graph){ListListIntegerresultnewArrayList();ListIntegerpathnewArrayList();// 从节点0开始DFSdfs(graph,0,path,result);returnresult;}/** * DFS回溯函数 * * param graph 邻接表 * param node 当前节点 * param path 当前路径 * param result 所有路径的结果列表 */privatevoiddfs(int[][]graph,intnode,ListIntegerpath,ListListIntegerresult){// 将当前节点加入路径path.add(node);// 如果到达目标节点n-1if(nodegraph.length-1){// 保存当前路径的副本result.add(newArrayList(path));}else{// 递归访问所有邻居节点for(intneighbor:graph[node]){dfs(graph,neighbor,path,result);}}// 回溯移除当前节点返回上一层path.remove(path.size()-1);}}方法二BFS广度优先搜索importjava.util.*;classSolution{/** * 使用BFS找到所有路径 * * param graph 邻接表 * return 所有路径 */publicListListIntegerallPathsSourceTarget(int[][]graph){ListListIntegerresultnewArrayList();inttargetgraph.length-1;// 队列存储路径而不是单个节点QueueListIntegerqueuenewLinkedList();queue.offer(Arrays.asList(0));// 初始路径只包含起点0while(!queue.isEmpty()){ListIntegercurrentPathqueue.poll();intlastNodecurrentPath.get(currentPath.size()-1);// 如果到达目标节点if(lastNodetarget){result.add(currentPath);}else{// 扩展所有可能的下一步for(intneighbor:graph[lastNode]){ListIntegernewPathnewArrayList(currentPath);newPath.add(neighbor);queue.offer(newPath);}}}returnresult;}}方法三迭代DFSimportjava.util.*;classSolution{/** * 使用显式栈实现的迭代DFS */publicListListIntegerallPathsSourceTarget(int[][]graph){ListListIntegerresultnewArrayList();inttargetgraph.length-1;// 栈存储路径StackListIntegerstacknewStack();stack.push(Arrays.asList(0));while(!stack.isEmpty()){ListIntegercurrentPathstack.pop();intlastNodecurrentPath.get(currentPath.size()-1);if(lastNodetarget){result.add(currentPath);}else{// 为了保持输出顺序与递归DFS一致需要逆序添加邻居for(intigraph[lastNode].length-1;i0;i--){intneighborgraph[lastNode][i];ListIntegernewPathnewArrayList(currentPath);newPath.add(neighbor);stack.push(newPath);}}}returnresult;}}算法分析时间复杂度O(2^N × N)在最坏情况下完全图从0到n-1的路径数可能是指数级的每条路径的长度最多为N复制路径需要O(N)时间空间复杂度DFSO(N) - 递归栈深度最多为N不包括结果存储BFSO(2^N × N) - 队列中可能存储所有路径结果存储O(2^N × N) - 所有路径的总空间算法过程1graph [[1,2],[3],[3],[]]DFS回溯开始: node0, path[] ├─ path[0] │ ├─ neighbor1: node1, path[0,1] │ │ └─ neighbor3: node3, path[0,1,3] → 到达目标保存[0,1,3] │ │ path回溯为[0,1]然后回溯为[0] │ └─ neighbor2: node2, path[0,2] │ └─ neighbor3: node3, path[0,2,3] → 到达目标保存[0,2,3] └─ 结束BFS初始队列[[0]]扩展0[[0,1], [0,2]]扩展[0,1][[0,2], [0,1,3]] → 保存[0,1,3]扩展[0,2][[0,1,3], [0,2,3]] → 保存[0,2,3]结果[[0,1,3], [0,2,3]]测试用例publicstaticvoidmain(String[]args){SolutionsolutionnewSolution();// 测试用例1标准示例int[][]graph1{{1,2},{3},{3},{}};System.out.println(Test 1: solution.allPathsSourceTarget(graph1));// [[0,1,3],[0,2,3]]// 测试用例2直接连接int[][]graph2{{1},{}};System.out.println(Test 2: solution.allPathsSourceTarget(graph2));// [[0,1]]// 测试用例3单节点int[][]graph3{{}};System.out.println(Test 3: solution.allPathsSourceTarget(graph3));// [[0]]// 测试用例4多层图int[][]graph4{{1,2},{3,4},{3,4},{5},{5},{}};System.out.println(Test 4: solution.allPathsSourceTarget(graph4));// [[0,1,3,5],[0,1,4,5],[0,2,3,5],[0,2,4,5]]// 测试用例5线性图int[][]graph5{{1},{2},{3},{4},{5},{}};System.out.println(Test 5: solution.allPathsSourceTarget(graph5));// [[0,1,2,3,4,5]]// 测试用例6星型图int[][]graph6{{1,2,3,4},{5},{5},{5},{5},{}};System.out.println(Test 6: solution.allPathsSourceTarget(graph6));// [[0,1,5],[0,2,5],[0,3,5],[0,4,5]]// 测试用例7复杂DAGint[][]graph7{{1,2},{3},{3,4},{5},{5},{}};System.out.println(Test 7: solution.allPathsSourceTarget(graph7));// [[0,1,3,5],[0,2,3,5],[0,2,4,5]]// 测试用例8两个节点无连接int[][]graph8{{},{}};System.out.println(Test 8: solution.allPathsSourceTarget(graph8));// 测试用例9起点等于终点的情况int[][]graph9{{}};// n1, 起点0终点0System.out.println(Test 9: solution.allPathsSourceTarget(graph9));// [[0]]// 测试用例10较大的图int[][]graph10{{1,2,3},{4,5},{4,5},{4,5},{6},{6},{7},{}};ListListIntegerresult10solution.allPathsSourceTarget(graph10);System.out.println(Test 10: result10.size());}关键点回溯在递归返回后移除当前节点确保不同路径之间不会相互影响路径复制保存路径时必须创建副本new ArrayList(path)否则所有保存的路径都会指向同一个List对象DAG保证是有向无环图所以不需要visited数组如果有环需要visited数组避免无限递归边界情况单节点图起点等于终点直接连接的两个节点复杂的多分支图顺序DFS会按邻接表顺序输出路径BFS会按路径长度顺序输出路径常见问题为什么不需要visited数组有向无环图DAG不可能回到已经访问过的节点什么时候需要创建路径副本每次找到完整路径并要保存到结果中时因为path对象会在回溯过程中被修改BFS和DFS的输出顺序有什么区别DFS按深度优先的顺序通常与邻接表顺序一致BFS按路径长度顺序先输出较短路径
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

北京网站建设付款方式河北保定最新消息

原文:towardsdatascience.com/hands-on-neural-networks-and-time-series-with-python-a61d7d75f3d9 在我的学士学位期间,我最喜欢的教授告诉我: 一旦某物工作得足够好,就不再有人称之为“AI” 这个概念与Larry Tesler的观点一致&…

张小明 2025/12/27 9:06:13 网站建设

顶顶呱网站建设最新手机网址

Nest Admin:企业级后台管理系统完整解决方案 【免费下载链接】nest-admin NestJs CRUD 使用 nestjs mysql typeorm redis jwt swagger 企业中后台管理系统项目RBAC权限管理(细粒度到按钮)、实现单点登录等。 项目地址: https://gitcode.com/GitHub_Trending/…

张小明 2025/12/27 9:05:39 网站建设

免费个人网站哪个好女生学什么专业最吃香

关注 霍格沃兹测试学院公众号,回复「资料」, 领取人工智能测试开发技术合集 在日常开发中,我们经常遇到需要快速实现某个功能但又不愿重复造轮子的情况。最近我发现了一个高效的方法:使用Cursor编辑器配合其强大的AI功能,可以自动…

张小明 2025/12/27 9:05:05 网站建设

双语企业网站源码宁波网站建设与设计金字塔

Excalidraw连接线自动吸附设置方法 在绘制系统架构图或流程草图时,你是否曾因连线歪斜、节点错位而反复调整?尤其是在多人协作的白板场景中,一个微小的偏移就可能让整张图显得杂乱无章。这类问题背后,其实是图形编辑工具对“精准连…

张小明 2025/12/27 9:04:32 网站建设

北京网站设计定制开发建设公司系统总裁

测试行业的角色演进 在软件测试行业迅猛发展的今天,测试人员的角色定位正经历深刻变革。过去,测试工作常被狭义理解为“执行测试用例”“发现缺陷”,测试人员更像是流程中的“执行者”。然而,随着DevOps、持续测试与工程效能理念…

张小明 2025/12/27 9:03:59 网站建设

建设集团网站 技术支持中企动力用wordpress做视频

在之前的 Git 仓库操作中,我先后遇到了「403 权限拒绝」「SSH 22 端口超时」「认证主机提示」等问题,最终通过 SSH 配置解决了所有推送障碍。本文将聚焦 SSH 相关技术点,复盘 “为什么要配置 SSH”“如何一步步配置”“遇到问题怎么解决”&am…

张小明 2025/12/27 9:03:25 网站建设