贪心算法解种植花朵问题
题目:Input: flowerbed = [1,0,0,0,1], n = 1 Output: True
题目解释:1代表已经有花种下,0表示还没有花种下,两朵花之间至少需要1个间隔,求解能否种花。
解题思路:两朵花之间至少有一个间隔,则当前位置的前一个位置和后一个位置都为0,
即pre=i==0?0:flowerbed[i-1];
next = i == flowerbed.length-1?0:flowerbed[i+1];
全部代码如下:
package test; public class Flowers {public static void main(String[] args) {int flowerbed[] = {1,0,0,0,1};System.out.println(canPlaceFlowers(flowerbed, 1));}public static boolean canPlaceFlowers(int[] flowerbed, int n) { int cnt = 0; for(int i=0;i<flowerbed.length;i++){ if(flowerbed[i]==1){ continue; } int pre = i == 0 ? 0: flowerbed[i-1]; int next = i == flowerbed.length-1 ? 0: flowerbed[i+1]; if(pre == 0 && next == 0){ cnt++; flowerbed[i] = 1; } } System.out.println("还能种"+cnt+"朵花 "); return cnt>=n;} }