日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 994 腐烂的橘子

發布時間:2023/12/29 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 994 腐烂的橘子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先給出題目:
在給定的網格中,每個單元格可以有以下三個值之一:
值 0 代表空單元格;
值 1 代表新鮮橘子;
值 2 代表腐爛的橘子。
每分鐘,任何與腐爛的橘子(在 4 個正方向上)相鄰的新鮮橘子都會腐爛。
返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 -1。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/rotting-oranges
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

給出思路:
解題首要目的,先把問題解決,不論方法。首先考慮到,直接模擬腐爛的過程,最后統計腐爛的結果。考慮以下幾種情況:一個網格里是腐爛的橘子,它只能腐化上下左右四個方向格子裝有的新鮮橘子;如果腐爛的橘子周圍沒有新鮮的橘子,則無法傳播腐化;當所有腐爛的橘子都無法傳播腐化時,結束模擬過程,開始統計結果。
下面給出代碼:

class Solution {public int orangesRotting(int[][] grid) {int count = 0;while (true) {if (haveNextStep(grid)) {grid = rotting(grid);count++;} else {if (isRotted(grid)) {return count;} else {return -1;}}}}//判斷腐化能否繼續進行下去public Boolean haveNextStep(int[][] grid) {int row = grid.length;int col = grid[0].length;for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {if(grid[i][j] == 2 ) {if (i - 1 >= 0 && grid[i - 1][j] == 1 ||i + 1 < row && grid[i + 1][j] == 1 ||j - 1 >= 0 && grid[i][j - 1] == 1||j + 1 < col && grid[i][j + 1] == 1) {return true;}}}}return false;}//對結果進行判斷,是否全部新鮮橘子被腐化public Boolean isRotted(int[][] grid) {int row = grid.length;int col = grid[0].length;int fresh = 0;for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {if (grid[i][j] == 1) {fresh++;} }}if(fresh > 0)return false;return true;}//模擬一步腐化過程,也就是一分鐘public int[][] rotting(int[][] grid) {int row = grid.length;int col = grid[0].length;int[][] temp = new int[row][col];// copyfor (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {temp[i][j] = grid[i][j];}}// rottingfor (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {if (grid[i][j] == 2) {if (i - 1 >= 0 && grid[i - 1][j] == 1) {temp[i - 1][j] = 2;}if (i + 1 < row && grid[i + 1][j] == 1) {temp[i + 1][j] = 2;}if (j - 1 >= 0 && grid[i][j - 1] == 1) {temp[i][j - 1] = 2;}if (j + 1 < col && grid[i][j + 1] == 1) {temp[i][j + 1] = 2;}}}}return temp;} }

這是能夠直接想到的方法,它解決了問題,初步到達了我們的目標。但是明顯它不夠效率,冗余代碼也較多。所以我們要思考有沒有更好的方法去解決這個問題。
算法課學的東西我都忘得差不多了,哈哈,我想不到更好的辦法了。嗯,只能借鑒一下其他人的思想了。等我徹底搞懂了再補充上來。
看了看官方的解答,感覺還是這個思路,我把代碼改了改,減少了代碼冗余度,時間復雜度并沒有降低,運行時間跟以前一樣都是4ms。
代碼如下:

class Solution {public int orangesRotting(int[][] grid) {//存四個方向坐標,省的整四個if導致重復代碼多int[] dr = new int[]{-1, 0, 1, 0};int[] dc = new int[]{0, -1, 0, 1};Queue<Integer> queue = new ArrayDeque<Integer>();Map<Integer,Integer> depth = new HashMap<Integer, Integer>();int row = grid.length;int col = grid[0].length;for (int i = 0; i < row; i++) {for(int j = 0; j < col; j++) {if (grid[i][j] == 2) {int code = i * col + j;queue.add(code);depth.put(code, 0);}}}int rs = 0;while(!queue.isEmpty()) {int code = queue.remove();int r = code / col;int c = code % col;for(int k = 0 ; k < 4; k++) {int nr = r + dr[k];int nc = c + dc[k];if(nr >=0 && nr < row && nc >= 0 && nc < col && grid[nr][nc] == 1) {grid[nr][nc] = 2;int ncode = nr * col + nc;queue.add(ncode);depth.put(ncode, depth.get(code) + 1);rs = depth.get(ncode);}}}for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {if (grid[i][j] == 1) {return -1;} }}return rs;} }

總結

以上是生活随笔為你收集整理的leetcode 994 腐烂的橘子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 少妇野外性xx老女人野外性xx | 日日夜夜人人 | 少妇xxx| 免费污片网站 | 91成人在线观看喷潮动漫 | 一级全黄毛片 | 国产免费黄色 | 永久av免费 | 国产精品夜夜躁视频 | 新91视频在线观看 | av体验区| 国产乱子伦视频一区二区三区 | 18av视频 | 免费淫片| 国产精品无码免费专区午夜 | 亚洲精品高潮 | 99热免费在线 | 亚色视频在线 | 激情影音 | 色悠悠视频 | 久操视频免费在线观看 | 国产丰满美女做爰 | 国产精选久久久 | 中文文字幕一区二区三三 | 性做久久久久久免费观看 | 91麻豆映画传媒 | 在线日韩精品视频 | 一本大道一区二区 | 久久精品视频观看 | 日本成人免费网站 | 久久中文字幕在线 | 91精品国产91久久久久久久久久久久 | 欧美高清精品一区二区 | 成人欧美一区二区三区黑人冫 | 欧美专区在线观看 | 视频一区在线观看 | 波多野结衣1区2区3区 | h片在线观看免费 | 欧美一级色图 | 日日夜夜一区 | 91红桃视频 | 五色天婷婷 | 人体毛片 | 日本视频久久 | 四虎黄色影视 | 台湾黄色网址 | 亚洲av无码国产精品久久不卡 | 四川丰满少妇被弄到高潮 | 无码人妻熟妇av又粗又大 | 国产日韩欧美在线 | 男女拍拍拍 | 日日夜夜天天 | 伊人青青草 | 黄色网页在线免费观看 | 狠狠噜噜 | 双性懵懂美人被强制调教 | 在线精品观看 | 黄色一级免费观看 | 免费荫蒂添的好舒服视频 | 自拍欧美亚洲 | 欧美日韩成人网 | 丝袜美女啪啪 | 欧美日韩色图片 | 亚洲免费一级 | 国产大奶在线 | 亚洲黄色三级 | 在线观看av片 | 精品福利视频一区二区 | 亚洲精品911 | 韩国19主播内部福利vip | 亚洲av激情无码专区在线播放 | 日本一二三不卡视频 | 波多野结衣电车痴汉 | 免费麻豆av| 久久深夜视频 | av中文字幕亚洲 | 日韩视频一区二区三区在线播放免费观看 | 成人精品免费看 | 亚洲综合av一区二区 | 亚洲国产精品999 | 一本大道久久久久精品嫩草 | 国产老熟妇精品观看 | 国产精品一区二区免费 | 91爱国产 | 葵司有码中文字幕二三区 | 美女扒开尿口让男人桶 | jizz欧美性23| 色多多av | 日本免费毛片 | 美女视频在线观看免费 | 视频一区亚洲 | 欧美一区二区公司 | 免费在线观看黄色 | 一级黄色片网址 | 男人天堂手机在线 | 久久99久久久久久 | 青青草国产在线播放 | 91九色porn| 亚洲av无码一区二区三区观看 |