코린이의 소소한 공부노트

[LeetCode/Easy] 485. Max Consecutive Ones 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 485. Max Consecutive Ones

무지맘 2023. 5. 19. 16:11

1. Input

1) int[] nums

 

2. Output

1) nums에서 연속된 1의 개수를 세어 가장 많은 것을 반환

 

3. Constraint

1) 1 <= nums.length <= 10^5

2) nums[i]1 또는 0이다.

 

4. Example

Input: nums = [1,1,0,1,1,1] -> Output: 3

Input: nums = [1,0,1,1,0,1] -> Output: 2

 

5. Code

1) 첫 코드(2023/05/19)

class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        int max = 0;
        for(int i=0 ; i<nums.length ; i++){
            if(nums[i]==1){
                int count = 1;
                for(int j=i+1 ; j<nums.length ; j++){
                    if(nums[j]==1) count++;
                    else { i = j; break;}
                }
                if(count>max) max = count;
            }
        }
        return max;
    }
}

 

2) 좀더 간결하게 만들어본 코드(2023/05/19)

class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        int max = 0, i = 0, count = 0;
        while(i<nums.length){            
            while(i<nums.length && nums[i]==1){
                count++; i++;
            }
            if(count>max)
                max = count;
            else if(count==0)
                i++;
            count = 0;
        }
        return max;
    }
}

- 1번보다 훨씬 빠른데, 메모리를 조금 더 쓴다.