Can Place Flowers
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.
C语言
bool canPlaceFlowers(int* flowerbed, int flowerbedSize, int n){
int i=0,count=0;
if(flowerbedSize<2){if(flowerbed[0]+n<=1)return true;else return false;}
while((i<flowerbedSize)&&(n>0)){
if(flowerbed[i]==0){
count++;
if(count==flowerbedSize){
int a=(count+1)/2;n=n-a;
if(n>0) return false;
else return true;}
}
else{
if((count!=0)&&(i-count>0)){n-=((count-1)/2);}
if((count!=0)&&(i-count==0)){n-=(count/2);}
count=0;
}
i++;
}
if(flowerbed[flowerbedSize-1]==0){n-=(count/2);}
if(n>0) return false;
else return true;
}
Success
Details
Runtime: 28 ms, faster than 5.88% of C online submissions for Can Place Flowers.
Memory Usage: 8.3 MB, less than 100.00% of C online submissions for Can Place Flowers.
python3
class Solution:
def canPlaceFlowers(self, flowerbed: List[int], n: int) -> bool:
for i, x in enumerate(flowerbed):
if (not x and (i == 0 or flowerbed[i-1] == 0)
and (i == len(flowerbed)-1 or flowerbed[i+1] == 0)):
n -= 1
flowerbed[i] = 1
return n <= 0
Success
Details
Runtime: 68 ms, faster than 38.68% of Python3 online submissions for Can Place Flowers.
Memory Usage: 13.2 MB, less than 6.85% of Python3 online submissions for Can Place Flowers.
Maximum Distance in Arrays
等我有钱了解锁这道题了再说叭