Suppose you have a long flowerbed in which some of the plots are planted and some are not. However, flowers cannot be planted in adjacent plots - they would compete for water and both would die.
Given a flowerbed (represented as an array containing 0 and 1, where 0 means empty and 1 means not empty), and a number n, return if n new flowers can be planted in it without violating the no-adjacent-flowers rule.
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
Note:
- The input array won't violate no-adjacent-flowers rule.
- The input array size is in the range of [1, 20000].
- n is a non-negative integer which won't exceed the input array size.
想法如下
- 歷遍 array,並根據條件檢查可種花的位置有幾個
- 如果已經滿足條件了,就可以直接回傳答案,不用再做檢查
Java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Solution { | |
public boolean canPlaceFlowers(int[] flowerbed, int n) { | |
final int upperBound = flowerbed.length - 1; | |
int cnt = 0; | |
for(int i = 0; i < flowerbed.length; i++) { | |
if(flowerbed[i] == 0 && (i == 0 || flowerbed[i-1] == 0) && (i == upperBound || flowerbed[i+1] == 0)) { | |
++cnt; | |
flowerbed[i] = 1; | |
} | |
if(cnt >= n) { | |
return true; | |
} | |
} | |
return false; | |
} | |
} |
kotlin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Solution { | |
fun canPlaceFlowers(flowerbed: IntArray, n: Int): Boolean { | |
return if(n == 0) { | |
true | |
} else { | |
var next = 0 | |
var prv = 0 | |
var count = 0 | |
for(i in flowerbed.indices) { | |
if(flowerbed[i] == 0) { | |
next = if(i == flowerbed.lastIndex) { | |
0 | |
} else { | |
flowerbed[i+1] | |
} | |
prv = if(i == 0) { | |
0 | |
} else { | |
flowerbed[i-1] | |
} | |
if(next + prv == 0) { | |
flowerbed[i] = 1 | |
++count | |
} | |
} | |
} | |
count >= n | |
} | |
} | |
} |
沒有留言:
張貼留言