获取网站全站代码津南网站建设
获取网站全站代码,津南网站建设,买书的网站排名,成都专业app开发服务思路#xff1a;利用bfs的思想 首先利用bfs遍历值为2的橘子#xff08;遍历时1和2都可以走#xff09;结束后如果存在某个橘子未被访问过且值为1则返回-1 再利用bfs遍历值为2的橘子 每遍历一次 时间加1 注意不要立即将map的值变为2#xff0c;可以通过一个缓存数组临时存放…
思路利用bfs的思想 首先利用bfs遍历值为2的橘子遍历时1和2都可以走结束后如果存在某个橘子未被访问过且值为1则返回-1 再利用bfs遍历值为2的橘子 每遍历一次 时间加1 注意不要立即将map的值变为2可以通过一个缓存数组临时存放 这样即可确定腐烂时间
注意点mapgrid只是把指针给map map改变grid也会改变 mapnew int[rows][cols]; mapgrid map改变grid不会改变
code:
class Solution {public int dir[][]{{0,1},{0,-1},{1,0},{-1,0}};public int map[][];public int tmap[][];public boolean vis[][];public int cows;public int cols;public int num10;public int num20;public int orangesRotting(int[][] grid) {cowsgrid.length;if(cows0) return -1;colsgrid[0].length;mapnew int[cows][cols];tmapnew int[cows][cols];for(int i0;icows;i){for(int j0;jcols;j){map[i][j]grid[i][j];tmap[i][j]grid[i][j];}}visnew boolean[cows][cols];int ans0;for(int i0;icows;i){//判断是否存在不能腐烂的橘子for(int j0;jcols;j){if(!vis[i][j]map[i][j]2){istrue(i,j);}}}boolean flagtrue;for(int i0;icows;i){for(int j0;jcols;j){if(!vis[i][j]map[i][j]1){flagfalse;}}}if(flagfalse)return -1;flagtrue;while(flag){flagfalse;for(int i0;icows;i){for(int j0;jcols;j){if(map[i][j]1){//还存在新鲜橘子flagtrue;break;}}if(flagtrue) break;}if(flagfalse) break;//不存在新鲜橘子for(int i0;icows;i){for(int j0;jcols;j){if(map[i][j]2){bfs(i,j);}}}ans;for(int i0;icows;i){for(int j0;jcols;j){map[i][j]tmap[i][j];}}}return ans;}public void bfs(int i,int j){for(int k0;k4;k){int newiidir[k][0];int newjjdir[k][1];if(0newinewicows0newjnewjcolstmap[newi][newj]1){tmap[newi][newj]2;//变为坏橘子}}}public void istrue(int i,int j){vis[i][j]true;for(int k0;k4;k){int newiidir[k][0];int newjjdir[k][1];if(0newinewicows0newjnewjcols(map[newi][newj]1||map[newi][newj]2)!vis[newi][newj]){istrue(newi,newj);}}}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87651.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!