LeetCode演算法題-Max Consecutive Ones(Java實現)
這是悅樂書的第242 次更新,第255 篇原創
01 看題和準備
今天介紹的是LeetCode演算法題中Easy級別的第109題(順位題號是485)。給定二進位制陣列,找到此陣列中連續1的最大數量。例如:
輸入:[1,1,0,1,1,1]
輸出:3
說明:前兩位或後三位是連續的1。連續1的最大數量為3。
注意:
-
輸入陣列只包含0和1。
-
輸入陣列的長度是一個正整數,不會超過10,000。
本次解題使用的開發工具是eclipse,jdk使用的版本是1.8,環境是win7 64位系統,使用Java語言編寫和測試。
02 第一種解法
使用一個記數變數count,for迴圈遍歷nums中的元素,遇到1時count就自加1,遇到0時,比較最大值,count歸零,迴圈結束後,如果count不等於0,還要再取一次最大值,最後返回最大值。
public int findMaxConsecutiveOnes(int[] nums) { int result = Integer.MIN_VALUE; int count = 0; for(int i=0; i<nums.length; i++){ if (nums[i] == 1) { count++; } else { result = Math.max(count, result); count = 0; } } if (count != 0) { result = Math.max(count, result); } return result; }
03 第二種解法
使用乘法。定義一個變數sum,遍歷nums中的元素,依次加上每個元素再乘以當前元素,然後判斷最大值(會判斷n次,n為陣列長度),最後返回最大值。
public int findMaxConsecutiveOnes2(int[] nums) { int result = 0, sum = 0; for (int num : nums) { sum = (sum + num)*num; result = Math.max(sum, result); } return result; }
04 小結
演算法專題目前已日更超過三個月,演算法題文章109 +篇,公眾號對話方塊回覆【資料結構與演算法 】、【演算法 】、【資料結構 】中的任一關鍵詞,獲取系列文章合集。
以上就是全部內容,如果大家有什麼好的解法思路、建議或者其他問題,可以下方留言交流,點贊、留言、轉發就是對我最大的回報和支援!