日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

LeetCode刷题记录8——605. Can Place Flowers(easy)

發布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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累加計數。

大體先分兩種情況:

  1. 如果n=0,那么肯定返回true,因為種0朵當然能種下。

  2. 當n不為0時:

    1. 如果數組長度為0,則返回false

    2. 如果數組長度為1,并且這個值為1,返回false;否則返回true

    3. 如果數組長度大于1:

      1. 考慮開頭:i=0,如果下標為0和1的值均不為1,則count++,并且值置為1

      2. 考慮結尾:i=length-1,如果下標length-1和length-2的值均不為1,count++,并且值置為1

      3. 剩余情況:當這個值不為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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。