485. Max Consecutive Ones
Given a binary array, find the maximum number of consecutive 1s in this array.
Example 1:
Input: [1,1,0,1,1,1]
Output: 3
Explanation: The first two digits or the last three digits are consecutive 1s.
The maximum number of consecutive 1s is 3.
Note:
- The input array will only contain
0
and1
. - The length of input array is a positive integer and will not exceed 10,000
public class Solution {
public int findMaxConsecutiveOnes(int[] nums) {
int result = 0;
int temp = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == 0)
temp = 0;
else {
temp += 1;
result = Math.max(temp, result);
}
}
return result;
}
// 动态规划
public int findMaxConsecutiveOnes(int[] nums) {
// 才用逆向思维,数组长度要加1
int dp[] = new int[nums.length + 1];
int max = 0;
for (int i = nums.length - 1; i >= 0; i--)
if (nums[i] == 1) {
dp[i] = dp[i + 1] + 1;
max = Math.max(dp[i], max);
}
return max;
}
// 动态规划
public int findMaxConsecutiveOnes(int[] nums) {
int dp[] = new int[nums.length];
int max = 0;
for (int i = 0; i < nums.length; i++)
if (nums[i] == 1) {
if (i == 0)
dp[i] = 1;
else
dp[i] = dp[i - 1] + 1;
max = Math.max(dp[i], max);
}
return max;
}
}