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:
10ms的答案:
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 605. Can Place Flowers
- LeetCode@Array_605_Can_Place_Flowers
- [LeetCode]605. Can Place Flowers
- 【leetcode】605. Can Place Flowers(Python & C++)
- LeetCode 605.Can Place Flowers
- 【LeetCode】605. Can Place Flowers 解题报告
- leetcode 605. Can Place Flowers python
- leetcode -- 605. Can Place Flowers 【边界处理 + 数学规律】
- [leetcode]: 605. Can Place Flowers
- LeetCode 605 : Can Place Flowers
- LeetCode-605. Can Place Flowers
- leetcode 605[easy]---Can Place Flowers
- LeetCode 605. Can Place Flowers
- LeetCode 605. Can Place Flowers 自己的解法
- [LeetCode]605. Can Place Flowers
- leetcode 605. Can Place Flowers
- LeetCode 605. Can Place Flowers
- LeetCode 605. Can Place Flowers (可以种花)
- The Solution to Leetcode 605 Can Place Flowers
- [leetcode]605. Can Place Flowers