news 2026/6/23 21:13:44

代码随想录 417.太平洋大西洋水流问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代码随想录 417.太平洋大西洋水流问题

思路:本题的起点(所求答案)不明确,但是终点(上下左右四个边界)明确。所以从边界出发可以更方便地找到答案。

1.边界:heights中的i = 0或者i = m - 1;或者j = 0或者j = n - 1的格子。

2.答案:既可流向太平洋也可流向大西洋的格子。

(1)对于可流向太平洋的格子,从上边界(i = 0)和左边界(j = 0)倒着往高处走,所有能访问到的格子都是可以流向太平洋的格子。

(2)对于可流向大西洋的格子,从下边界(i = m - 1)和右边界(j = n - 1)倒着往高处走,所有能访问到的格子都是可以流向大西洋的格子。

3.计算这两类格子的交集,就是既可流向太平洋也可流向大西洋的格子。

附代码:

class Solution { //左右上下 private static final int[][] DIRS = {{0,-1},{0,1},{-1,0},{1,0}}; public List<List<Integer>> pacificAtlantic(int[][] heights) { int m = heights.length,n = heights[0].length; //从太平洋边界出发 boolean[][] pacificVis = new boolean[m][n]; for(int j = 0;j < n;j++){ dfs(0,j,pacificVis,heights); //上边界 } for(int i = 1;i < m;i++){ dfs(i,0,pacificVis,heights); //左边界,i从1开始是因为(0,0)已经包含在上边界中 } //从大西洋边界出发 boolean[][] atlanticVis = new boolean[m][n]; for(int j = 0;j < n;j++){ dfs(m - 1,j,atlanticVis,heights); //下边界 } for(int i = 0;i < m - 1;i++){ dfs(i,n - 1,atlanticVis,heights); //右边界 最后一列是m - 2是因为(m - 1,n - 1)已经包含在下边界中 } //交集即为答案 List<List<Integer>> res = new ArrayList<>(); for(int i = 0;i < m;i++){ for(int j = 0;j < n;j++){ if(pacificVis[i][j] && atlanticVis[i][j]){ res.add(List.of(i,j)); } } } return res; } private void dfs(int i,int j,boolean[][] vis,int[][] heights){ if(vis[i][j]){ //避免重复访问,避免反复横跳无限递归 return; } vis[i][j] = true; //标记(i,j)已访问 for(int[] d : DIRS){//枚举相邻格子 int x = i + d[0],y = j + d[1]; if(x >= 0 && x < heights.length && y >= 0 && y < heights[x].length && heights[x][y] >= heights[i][j]){ //往高处走 dfs(x,y,vis,heights); } } } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 19:46:56

Phi-2模型完全攻略:让27亿参数的小巨人成为你的AI助手

还在为选择合适的大语言模型而头疼吗&#xff1f;今天我要向你介绍一位"小而美"的AI助手——Phi-2模型。这个只有2.7亿参数的Transformer模型&#xff0c;却在常识推理、语言理解和逻辑思维测试中表现接近最先进水平&#xff0c;堪称AI界的"浓缩精华"。 【…

作者头像 李华
网站建设 2026/6/23 19:49:08

30分钟掌握Tauri:用Rust构建你的第一个桌面应用

30分钟掌握Tauri&#xff1a;用Rust构建你的第一个桌面应用 【免费下载链接】candle Minimalist ML framework for Rust 项目地址: https://gitcode.com/GitHub_Trending/ca/candle 还在为Electron应用体积过大而烦恼&#xff1f;想要开发高性能的桌面应用却担心技术门槛…

作者头像 李华
网站建设 2026/6/23 10:31:51

WeChatTweak-macOS开源项目深度参与指南

WeChatTweak-macOS开源项目深度参与指南 【免费下载链接】WeChatTweak-macOS A dynamic library tweak for WeChat macOS - 首款微信 macOS 客户端撤回拦截与多开 &#x1f528; 项目地址: https://gitcode.com/gh_mirrors/we/WeChatTweak-macOS 作为一名技术爱好者&…

作者头像 李华
网站建设 2026/6/23 18:31:06

NootRX:让AMD RDNA 2显卡在macOS上完美运行

NootRX&#xff1a;让AMD RDNA 2显卡在macOS上完美运行 【免费下载链接】NootRX Lilu plug-in for unsupported RDNA 2 dGPUs. No commercial use. 项目地址: https://gitcode.com/gh_mirrors/no/NootRX 想要在macOS上使用AMD RDNA 2系列独立显卡吗&#xff1f;NootRX项…

作者头像 李华
网站建设 2026/6/22 23:35:10

DBeaver崩溃救星:3步紧急恢复SQL脚本的完整方案

DBeaver崩溃救星&#xff1a;3步紧急恢复SQL脚本的完整方案 【免费下载链接】dbeaver 项目地址: https://gitcode.com/gh_mirrors/dbe/dbeaver 金融分析师小王正在编写关键报表的复杂SQL查询&#xff0c;DBeaver插件突然崩溃导致2小时的工作成果瞬间消失。这种"代…

作者头像 李华
网站建设 2026/6/23 21:04:08

项目效率翻倍,做对了什么?

一】在项目一期开发楼里App的时候&#xff0c;经常因为事情多而手忙脚乱。上午的事情做不完&#xff0c;就顺势推到下午和晚上&#xff0c;下午和晚上的事再找时间补&#xff0c;这样一来很多事都在混乱中推进。万事开头难&#xff0c;因为起初的事很多。把独立开发当成半个创业…

作者头像 李华