Re: [閒聊] 每日LeetCode
605. Can Place Flowers
給你一個只有0和1的矩陣表示土地,1表示該位置有種花,再給你一個數字n表示要種的
花有幾個,如果要種一個花他的旁邊不能有相鄰的花,求出給定的土地是否可以種n個花
Example 1:
Input: flowerbed = [1,0,0,0,1], n = 1
Output: true
Example 2:
Input: flowerbed = [1,0,0,0,1], n = 2
Output: false
思路:
1.歸納出所有可能的狀態:
如果當前位置有花就往前兩格,因為下一格必不能種
如果前一格有花就往前一格,因為當前格沒有花所以對下一格來說是合法的
如果下一格有花就往前三格,因為下下格也不能種花
都不是的話表示前後都沒有種花,要種的花數量減少一
2.最後判斷還有沒有花剩下沒種的即可。
Java Code:
----------------------------------------------------------------------------
class Solution {
public boolean canPlaceFlowers(int[] flowerbed, int n) {
for (int i = 0; i < flowerbed.length && n > 0;) {
if (flowerbed[i] == 1) {
i += 2;
} else if (i - 1 >= 0 && flowerbed[i - 1] == 1) {
i++;
} else if (i + 1 < flowerbed.length && flowerbed[i + 1] == 1) {
i += 3;
} else {
i += 2;
n--;
}
}
return n <= 0;
}
}
----------------------------------------------------------------------------
--
https://i.imgur.com/PIoxddO.jpg
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.100.75.86 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1679329469.A.85D.html
推
03/21 00:38,
1年前
, 1F
03/21 00:38, 1F
討論串 (同標題文章)
完整討論串 (本文為第 267 之 719 篇):
閒聊
1
3