LeetCode第一題 曼哈頓距離

2021-10-06 06:56:23 字數 1158 閱讀 5523

你現在手裡有乙份大小為 n x n 的『地圖』(網格) grid,上面的每個『區域』(單元格)都用 0 和 1 標記好了。其中 0 代表海洋,1 代表陸地,你知道距離陸地區域最遠的海洋區域是是哪乙個嗎?請返回該海洋區域到離它最近的陸地區域的距離。

我們這裡說的距離是『曼哈頓距離』( manhattan distance):(x0, y0) 和 (x1, y1) 這兩個區域之間的距離是 |x0 - x1| + |y0 - y1| 。

如果我們的地圖上只有陸地或者海洋,請返回 -1。

示例 1:

1 0 1

0 0 0

1 0 1

輸入:[[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 所...