今年第一天从刷题开始拯救本身!PS末尾满满负能量! (金鱼脑子忘了)小程序
今天就刷了每日一题种花问题数组
真的没有一点思路,去题解里膜拜了大佬的想法,模仿大佬的想法写了一个小小程序,改了又改,很复杂TTblog
class Solution { public boolean canPlaceFlowers(int[] flowerbed, int n) { int len=flowerbed.length; //特殊状况讨论 if(len==1&&flowerbed[0]==0) { flowerbed[0]=1;n--; if(n>0) return false; else return true; } else { //遍历数组,左右均为0便可种花 for(int i=0;i<len-1;i++)//这里i只能到len-2,少了一个len-1 { if(flowerbed[i]==0&&(i==0 || flowerbed[i-1]==0)&&(flowerbed[i+1]==0 || i==len-1)) { flowerbed[i]=1; n--; if(n==0) break; } } if(flowerbed[len-1]==0&&flowerbed[len-2]==0)n--; if(n>0) return false; else return true; } } }
遇到的问题(真的很白痴,写下来当个记录了。。。)io
当时本身上手写的时候就隐隐约约想到数组边界有问题须要考虑了,可是看了大佬的解析,没发现,就没作这一块,事实证实,那不是没作,是你本身没看见啊!!气。class
因而又从新限制数组边界的两种状况。而后again失败,是没考虑多种状况,例如,有种一颗花,例若有种花的地方大于N的,发现循环写多了,又从新合并简化代码,等等。还有以恶地方,就是只能写N>0的状况,由于它相反的!=0和==0 是两种状况,不如>0方便!而后改了又改,最后终于过了。感谢发布题解的大佬,救我一命!循环
虽然是很简单的代码,可是考虑的地方不少,注意的小细节不少,须要思!虑!周!全!遍历
但愿这一道题目能够开启2021崭新又奋斗的一年!!程序
PPS我真的是金鱼脑子,东西不能留着写,必忘!di