news 2026/4/18 12:08:49

代码随想录 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/4/18 10:52:20

人机对话的新纪元:自然语言如何重塑数据查询体验

今年参与的AI项目中&#xff0c;NL2SQL&#xff08;自然语言转换为 SQL&#xff09;技术应用广泛&#xff0c;本文分享一些笔者在项目支持实践中的感悟&#xff0c;并讨论&#xff1a;为什么SQL作为声明式语言&#xff0c;是LLM的关键预处理工具&#xff1f;NL2SQL的未来&#…

作者头像 李华
网站建设 2026/4/18 9:58:56

GPT-3 Sandbox终极指南:5分钟构建你的AI应用

GPT-3 Sandbox终极指南&#xff1a;5分钟构建你的AI应用 【免费下载链接】gpt3-sandbox The goal of this project is to enable users to create cool web demos using the newly released OpenAI GPT-3 API with just a few lines of Python. 项目地址: https://gitcode.co…

作者头像 李华
网站建设 2026/4/18 10:08:31

终极mpv播放器完整指南:如何快速掌握命令行视频播放神器

终极mpv播放器完整指南&#xff1a;如何快速掌握命令行视频播放神器 【免费下载链接】mpv &#x1f3a5; Command line video player 项目地址: https://gitcode.com/GitHub_Trending/mp/mpv mpv是一款功能强大的开源命令行媒体播放器&#xff0c;以其轻量级、高性能和高…

作者头像 李华
网站建设 2026/4/16 12:47:37

第51集科立分板机:选择适合PCB板切割的全自动激光分板机?

选择适合 PCB 板切割的全自动激光分板机&#xff0c;需综合考虑切割精度、效率、板材兼容性等因素&#xff0c;以下是具体选型要点&#xff1a;考虑切割精度与质量&#xff1a;切割精度通常需在 0.02mm 至 0.05mm 以内&#xff0c;确保切割路径准确。对于有 BGA、陶瓷电容等元件…

作者头像 李华
网站建设 2026/4/18 8:01:58

Qwen3-32B大语言模型:思维模式切换与高性能推理详解

Qwen3-32B大语言模型&#xff1a;思维模式切换与高性能推理详解 【免费下载链接】Qwen3-32B-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-32B-GGUF Qwen3-32B作为阿里云最新一代大语言模型&#xff0c;在推理能力、指令跟随和智能体功能方面实现了突…

作者头像 李华
网站建设 2026/4/18 7:41:01

使用 Word 模板占位符生成文档的技术方案实践

、什么是 Word 模板占位符&#xff1f;Word 模板占位符 是指在 .docx 文档中预先定义的特殊标记&#xff08;如 ${NO}、${CPMC}&#xff09;&#xff0c;用于标识将来会被动态数据替换的位置。开发时&#xff0c;程序读取该模板&#xff0c;将占位符替换为实际业务数据&#xf…

作者头像 李华