您的位置:首页 > 其它

LeetCode: 605. Can Place Flowers

2017-07-12 14:59 429 查看
LeetCode: 605. 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.

自己的答案,11ms:

public class Solution {
public boolean canPlaceFlowers(int[] flowerbed, int n) {
if (flowerbed == null) {
return false;
}
int length = flowerbed.length;
int start = 0;
int result = 0;
while (flowerbed[start] == 0) {
start++;
if (start == length) {
return n <= ((start + 1) / 2);
}
}
result += start/2;
int end = flowerbed.length - 1;
while (flowerbed[end] == 0) {
end--;
}
result += (flowerbed.length - 1 - end)/2;
int array = 0;
for (int i = start; i <= end; i++) {
if (flowerbed[i] == 0) {
array++;
} else {
if (array > 2) {
result += (array - 1) / 2;
}
array = 0;
}
}
if (n <= result) {
return true;
}
return false;
}
}


10ms的答案:

public class Solution {
public boolean canPlaceFlowers(int[] flowerbed, int n) {

int count = 0;
int i = 0;
while(i < flowerbed.length){
if((flowerbed[i] == 0 && ( i == 0 || flowerbed[i-1] == 0)) && (i == flowerbed.length-1 || flowerbed[i+1] == 0 )){
flowerbed[i] = 1;
++count;
}
i++;
}
if(n <= count) return true;

return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode