您的位置:首页 > 编程语言 > Java开发

leetcode解题之485. Max Consecutive Ones Java版 (二进制连续最长1的个数)

2017-03-25 08:54 344 查看

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
and
1
.
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐