반응형
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/
'개발 > 알고리즘' 카테고리의 다른 글
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 |
댓글