LeetCode数组遍历485

107 阅读1分钟

描述:

给定一个二进制数组 nums , 计算其中最大连续 1 的个数。

示例 1: 输入:nums = [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.

示例 2: 输入:nums = [1,0,1,1,0,1] 输出:2

解决方案:

1、暴力遍历

     public static int findMaxConsecutiveOnes(int[] nums) {
 ​
         int i, maxNumberOne = 0, numberOne=0;
 ​
         for(i=0; i<nums.length; i++){
             if(nums[i]==1){
                 numberOne++;
             }else {
                 numberOne=0;
             }
             if (numberOne>maxNumberOne){
                 maxNumberOne=numberOne;
             }
         }
 ​
         return maxNumberOne;
     }

2、动态规划

传递数组中的值只有0和1,利用动态规划思想,直接对原有数组进行覆盖,最后选出最大值即可!

 public static int findMaxConsecutiveOnes(int[] nums) {
 ​
         int i, maxNumberOne = 0;
 ​
         for(i=1; i<nums.length; i++){
             if(nums[i]==1){
                 nums[i] = nums[i-1] + 1;
             }else {
                 nums[i] = 0;
             }
         }
         for( i=0; i<nums.length; i++){
             if(nums[i]>maxNumberOne){
                 maxNumberOne=nums[i];
             }
         }
         return maxNumberOne;
     }

\