본문 바로가기
개발/알고리즘

485. Max Consecutive Ones

by ny0011 2021. 1. 22.
반응형

0, 1로만 이루어진 array에서 연속적으로 가장 긴 1의 길이 구하기

array 길이는 < 10^4 으로 널널하다

 

1. 첫 시도

1) zero의 index를 구한다

2) 인접한 두 zero index값의 차 -1 = 1의 길이

3) max(인접한 두 zero index값의 차 -1)

 

그리고 영접한 수많은 if문들ㅠㅠ

예외 처리

1) zero가 없을 때

2) zero만 있을 때

3) zeros의 for 문 전에 for문에서 체크하지 못하는 맨 처음과 맨 끝값은 따로 max로 구해준다

class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        zeros = []
        for idx, num in enumerate(nums):
            if num == 0:
                zeros.append(idx)
        if not zeros:
            return len(nums)
        if len(zeros) == len(nums):
            return 0
        
        _max = max(zeros[0],len(nums) - zeros[len(zeros)-1]-1)
        for i in range(len(zeros)-1):
            if zeros[i+1] - zeros[i]-1 > _max:
                _max = zeros[i+1] - zeros[i]-1
        return _max
41 / 41 test cases passed.
Status: Accepted
Runtime: 336 ms
Memory Usage: 14.5 MB

 

2. sample 308 ms submission

for문 한번 돌려서 끝

0을 만날 때까지 1의 길이를 세고

0을 만나면 현재까지 센 1의 길이와 최대 1의 길이를 비교

마지막 max() : 마지막 길이는 0이 없어서 비교 못하니까 해줌

class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        cons = 0
        consmax = 0
        for num in nums:
            if num == 1:
                cons = cons+1
            else:
                if cons > consmax:
                    consmax = cons
                cons = 0
        consmax = max(cons,consmax)
        return consmax

 

leetcode.com/problems/max-consecutive-ones/

 

Max Consecutive Ones - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

'개발 > 알고리즘' 카테고리의 다른 글

Squares of a Sorted Array  (0) 2021.01.23
Find Numbers with Even Number of Digits  (0) 2021.01.22
파이썬 알고리즘 꿀팁  (0) 2020.12.09
[leetcode] week1 - Move Zeroes  (0) 2020.04.13
[leetcode] week1 - Maximum Subarray  (0) 2020.04.12

댓글