117、最大連續1的個數
阿新 • • 發佈:2018-12-23
題目描述
給定一個二進位制陣列, 計算其中最大連續1的個數。
示例 1:
輸入: [1,1,0,1,1,1]
輸出: 3
解釋: 開頭的兩位和最後的三位都是連續1,所以最大連續1的個數是 3.
注意:
輸入的陣列只包含 0 和1。
輸入陣列的長度是正整數,且不超過 10,000。
跟之前的那個壓縮字串很類似,但是我還是花了很長時間(大於30分鐘),才擼出來,很難受
class Solution { public int findMaxConsecutiveOnes(int[] nums) { int mak = 0; int w = 0; for (int i = 0; i < nums.length; i++) { if(i == nums.length-1 || (nums[i+1]) != nums[i]){ if(nums[w] == 1){ mak = Math.max(i - w + 1, mak); } w = i + 1; } } return mak; } }
但是後來我發現有更好的解法比如
class Solution { public int findMaxConsecutiveOnes(int[] nums) { int count = 0; int tem = 0; for (int i = 0; i < nums.length; i++) { if(nums[i] == 1) tem++; else { count = Math.max(tem, count); tem = 0; } } return count > tem?count:tem; } }
排名靠前的程式碼,感覺這個和上面的第一中解法是差不多的:
class Solution { public int findMaxConsecutiveOnes(int[] nums) { if(nums == null) { return 0; } int max = 0; int temp = 0; for(int num : nums) { if(num == 1) { temp++; } else { max = max > temp ? max :temp; temp = 0; } } return max > temp ? max :temp; } }