LeetCode刷题记录8——605. Can Place Flowers(easy)
LeetCode刷題記錄8——605. Can Place Flowers(easy)
目錄
LeetCode刷題記錄8——605. Can Place Flowers(easy)
題目
語言
思路
源碼
?后記
題目
題目說給定一個數組,數組中只有0或1,1代表此處種了花,0代表此處空閑不種花。種花的規則是相鄰之間不能種花,只能隔一下種一個。給定一個整數n,代表這個數組還能種多少多花,如果能種的下n朵,就返回true;否則返回false。
語言
Java、C++(算法用的一模一樣,只是換了一種語言)
思路
整體思路:遍歷整個數組,發現能種花的地方,用count累加計數。
大體先分兩種情況:
-
如果n=0,那么肯定返回true,因為種0朵當然能種下。
-
當n不為0時:
-
如果數組長度為0,則返回false
-
如果數組長度為1,并且這個值為1,返回false;否則返回true
-
如果數組長度大于1:
-
考慮開頭:i=0,如果下標為0和1的值均不為1,則count++,并且值置為1
-
考慮結尾:i=length-1,如果下標length-1和length-2的值均不為1,count++,并且值置為1
-
剩余情況:當這個值不為1,且前一個和后一個均不為1時,count++,并且值置為1
-
最終將count與輸入的n對比,如果count>=n,則返回true;否則返回false。
-
源碼
class Solution {public boolean canPlaceFlowers(int[] flowerbed, int n) {if(n==0)return true;else {int count=0;if(flowerbed.length==0) return false;else if(flowerbed.length==1) {if(flowerbed[0]==1) return false;else return true;}else {for(int i=0;i<flowerbed.length;i++) {if(i==0)if(flowerbed[i]!=1&&flowerbed[i+1]!=1) {count++;flowerbed[i]=1;}if(i==flowerbed.length-1)if(flowerbed[i-1]!=1&&flowerbed[i]!=1) {count++;flowerbed[i]=1;}if(i!=0&&i!=flowerbed.length-1) {if(flowerbed[i]!=1&&flowerbed[i-1]!=1&&flowerbed[i+1]!=1) {count++;flowerbed[i]=1;}}}if(count>=n)return true;elsereturn false;}}}
}
?后記
其實做這題的主要是要看懂題目中的adjacent 是啥意思,這是相鄰的意思,如果這個理解錯了,后面就涼涼。
總結
以上是生活随笔為你收集整理的LeetCode刷题记录8——605. Can Place Flowers(easy)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode刷题记录7——824.
- 下一篇: LeetCode刷题记录9——58. L