news 2026/4/26 1:25:19

力扣994.腐烂的橘子

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣994.腐烂的橘子

第一次,广度优先算法遍历图,用了两个队列,100%,17.50%

class Solution { public: //广度优先遍历 int dp[4][2] = {{0,1},{0,-1},{1,0},{-1,0}}; int orangesRotting(vector<vector<int>>& grid) { int count = 0; queue<int> q_x; queue<int> q_y; //初始化 for(int i = 0;i < grid.size();i++){ for(int j = 0;j < grid[0].size();j++){ if(grid[i][j] == 2){ q_x.push(i); q_y.push(j); } } } while(!q_x.empty()){ int n = q_x.size(); for(int i = 0;i < n;i++){ int x = q_x.front(); int y = q_y.front(); q_x.pop(); q_y.pop(); for(int j = 0;j < 4;j++){ if(x + dp[j][0] < grid.size() && x + dp[j][0] >=0 && y + dp[j][1] < grid[0].size() && y + dp[j][1] >=0){ if(grid[x + dp[j][0] ][y + dp[j][1] ] == 1){ q_x.push(x + dp[j][0]); q_y.push(y + dp[j][1]); grid[x + dp[j][0] ][y + dp[j][1] ] = 2; } } } } if(!q_x.empty()) count++; } for(int i = 0;i < grid.size();i++){ for(int j = 0;j < grid[0].size();j++){ if(grid[i][j] == 1){ return -1; } } } return count; } };

经评论区点播,可以将坐标(i,j)存储成x = i * column + j ,因为 j < column 所以

i = x /column;j = x % column;

以此降低内存消耗 时间 100%,空间88.79%

class Solution { public: //广度优先 //调用了几次bfs //加入队列,队列值q=i*c+j,其中c是列数 //则i = q/c,j = q%c //最后一次会多记一次 int orangesRotting(vector<vector<int>>& grid) { int row = grid.size(); int column = grid[0].size(); int res = 0; //将初始的腐烂的橘子放入队列中 queue<int> queue; for(int i = 0;i < row;i++) for(int j = 0;j < column;j++) { if(grid[i][j] == 2) queue.push(i*column+j); } //深度优先算法 while(queue.size()){ int n = queue.size(); for(int x = 0;x < n;x++){ int y = queue.front(); queue.pop(); int i = y/column; int j = y%column; //感染周围的橘子,并将其加入队列,上下左右 if((i - 1) >= 0 && grid[i-1][j] == 1){ grid[i-1][j] = 2; queue.push((i-1)*column+j); } if((i+1)<row && grid[i+1][j] == 1){ grid[i+1][j] = 2; queue.push((i+1)*column+j); } if((j-1) >= 0 && grid[i][j-1] == 1){ grid[i][j-1] = 2; queue.push(i*column + j-1); } if((j+1) < column && grid[i][j+1] == 1){ grid[i][j+1] = 2; queue.push(i*column + j+1); } } res++; } //如果有橘子没被感染,返回-1 for(int i = 0;i < row;i++) for(int j = 0;j < column;j++) if(grid[i][j] == 1) return -1; //res = 0,没坏掉的橘子,返回0; if(res == 0) return 0; return res-1; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 1:24:26

基于CrewAI框架构建多智能体量化投资分析系统实战指南

1. 项目概述&#xff1a;当AI智能体遇上量化投资最近在GitHub上看到一个挺有意思的项目&#xff0c;叫liangdabiao/easy_investment_Agent_crewai。光看名字&#xff0c;就能嗅到一股“让投资变简单”的味道&#xff0c;而且把“智能体”&#xff08;Agent&#xff09;和“Crew…

作者头像 李华
网站建设 2026/4/26 1:23:57

数字孪生“大脑”:物理仿真引擎核心技术全景解析

数字孪生“大脑”&#xff1a;物理仿真引擎核心技术全景解析 引言 在数字孪生构建的虚拟世界中&#xff0c;物理仿真引擎扮演着至关重要的“物理规则制定者”与“世界模拟器”角色。它不仅是连接虚拟与现实的技术桥梁&#xff0c;更是驱动自动驾驶、工业优化、智慧城市等前沿应…

作者头像 李华
网站建设 2026/4/26 1:14:21

英雄联盟国服换肤终极指南:5分钟解锁全皮肤的秘密武器

英雄联盟国服换肤终极指南&#xff1a;5分钟解锁全皮肤的秘密武器 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 你是否曾经羡慕那些拥有稀有皮肤的玩…

作者头像 李华
网站建设 2026/4/26 1:09:26

ToolGen:让大语言模型将工具API作为词汇直接生成与调用

1. 项目概述&#xff1a;当大语言模型学会“认工具”在构建AI智能体的漫长探索中&#xff0c;我们一直面临一个核心难题&#xff1a;如何让大语言模型&#xff08;LLM&#xff09;精准地“想起”并“使用”成千上万的外部工具&#xff1f;传统的做法&#xff0c;无论是基于描述…

作者头像 李华