你現在手裡有乙份大小為 n x n 的『地圖』(網格) grid,上面的每個『區域』(單元格)都用 0 和 1 標記好了。其中 0 代表海洋,1 代表陸地,你知道距離陸地區域最遠的海洋區域是是哪乙個嗎?請返回該海洋區域到離它最近的陸地區域的距離。
我們這裡說的距離是『曼哈頓距離』( manhattan distance):(x0, y0) 和 (x1, y1) 這兩個區域之間的距離是 |x0 - x1| + |y0 - y1| 。
如果我們的地圖上只有陸地或者海洋,請返回 -1。
示例 1:
1 0 1輸入:[[1,0,1],[0,0,0],[1,0,1]]0 0 0
1 0 1
輸出:2
解釋:海洋區域 (1, 1) 和所有陸地區域之間的距離都達到最大,最大距離為 2。
class
solution);
}}}// 如果我們的地圖上只有陸地或者海洋,請返回 -1。
if(queue.
isempty()
|| queue.
size()
== n * n)
int distance =-1
;while
(!queue.
isempty()
));}
// 遍歷下方單元格
if(r+
1< n && grid[r+1]
[c]==0)
);}// 遍歷左邊單元格
if(c-
1>=
0&& grid[r]
[c-1]==
0));
}// 遍歷右邊單元格
if(c+
1< n && grid[r]
[c+1]==
0));
}}}return distance;
}
思路:首先把所有的陸地放在乙個佇列中,然後執行第一次迴圈,將與原陸地距離為1的海洋寫入改佇列中,然後把原陸地全部刪除;然後執行第二次迴圈,將於原陸地距離為2的海洋寫入該佇列中,然後刪除與原陸地距離為1的所有海洋;以此類推,當佇列中沒有海洋的時候,就結束迴圈。所以最遠距離就是當佇列中沒有值時的距離-1,所以為了方便我們把起始距離設為-1,則最後返回的就是最遠的距離。 leetcode簡單題第一題python3
題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1...
LeetCode 第一題TwoSum題解
1.暴力法求解 思想 利用兩個for迴圈對數字進行遍歷,第乙個for迴圈迴圈位置到nums.length 1,第二個for迴圈起始為i 1.時間複雜度 o n 2 空間複雜度 o 1 public static int twosum int nums,int target throw newille...
Leetcode 第一題 兩數之和
給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所...