【題目傳送門】
給定一個二進制數組, 計算其中最大連續1的個數。數組
示例 1:優化
輸入: [1,1,0,1,1,1]
輸出: 3
解釋: 開頭的兩位和最後的三位都是連續1,因此最大連續1的個數是 3.code
注意:blog
輸入的數組只包含 0 和1。
輸入數組的長度是正整數,且不超過 10,000。圖片
來源:力扣(LeetCode)leetcode
簡單題我重拳出擊:>get
題目給出了二進制數組,不是0就是1
題目中有連續要求因此對於對於1則是疊加次數,趕上0則是要求須要進行重置當前的計數,二最後返回是要求最大的連續1的個數因此能夠先將1判斷放在前,而後是對於maxsum和sum的比對,取得最大值返回,在判斷若是是0就進行sum=0的置0操做。class
int findMaxConsecutiveOnes(int* nums, int numsSize){ int sum=0,maxsum=0; for(int i=0;i<numsSize;i++){ if(nums[i]==1)sum++; maxsum=fmax(sum,maxsum); if(nums[i]==0)sum=0; } return maxsum; }
太感動了,這麼簡單的題目簡直是冬天裏的一抹溫暖
運行結果:
而後再進行一些優化,去掉對0的判斷,畢竟非1即0;二進制
int findMaxConsecutiveOnes(int* nums, int numsSize){ int sum=0,maxsum=0; for(int i=0;i<numsSize;i++){ if(nums[i]==1){sum++; maxsum=fmax(sum,maxsum);} else sum=0; } return maxsum; }
雙99,真好看。im