Topic
- Array
Description
https://leetcode.com/problems/max-consecutive-ones/
Given a binary array nums, return the maximum number of consecutive 1’s in the array.
Example 1:
Input: nums = [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.
Example 2:
Input: nums = [1,0,1,1,0,1]
Output: 2
Constraints:
- 1 < = n u m s . l e n g t h < = 1 0 5 1 <= nums.length <= 10^5 1<=nums.length<=105
- nums[i] is either 0 or 1.
Analysis
略
Submission
public class MaxConsecutiveOnes {
// 我写的
public int findMaxConsecutiveOnes(int[] nums) {
int max = 0, count = 0;
for (int num : nums) {
if (num == 0) {
count = 0;
} else {
if (++count > max) {
max = count;
}
}
}
return max;
}
// 别人的
public int findMaxConsecutiveOnes2(int[] nums) {
int maxHere = 0, max = 0;
for (int n : nums)
max = Math.max(max, maxHere = n == 0 ? 0 : maxHere + 1);
return max;
}
}
Test
import static org.junit.Assert.*;
import org.junit.Test;
public class MaxConsecutiveOnesTest {
@Test
public void test() {
MaxConsecutiveOnes obj = new MaxConsecutiveOnes();
assertEquals(3, obj.findMaxConsecutiveOnes(new int[] {1, 1, 0, 1, 1, 1}));
assertEquals(2, obj.findMaxConsecutiveOnes(new int[] {1, 0, 1, 1, 0, 1}));
assertEquals(3, obj.findMaxConsecutiveOnes2(new int[] {1, 1, 0, 1, 1, 1}));
assertEquals(2, obj.findMaxConsecutiveOnes2(new int[] {1, 0, 1, 1, 0, 1}));
}
}