Summary
주어진 배열에서 1의 최대 개수를 구하는 문제
example
Input: nums = [1,1,0,1,1,1]
Output: 3
Constraints
1 <= nums.length <= 105
nums[i] is either 0 or 1.
from typing import List
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
maxlen = 0
presentlen = 0
for i in nums:
if i == 1:
presentlen +=1
else:
maxlen = max(maxlen, presentlen)
presentlen = 0
return max(maxlen, presentlen)
Time Complexity
Space Complexity
✅ O(N) 시간 복잡도 → 입력 크기(N)만큼 연산 수행 (리스트 한 번 순회)
✅ O(1) 공간 복잡도 → 입력 크기에 관계없이 일정한 메모리 사용 (추가 리스트 없이 변수만 사용)
class Solution(object):
def findMaxConsecutiveOnes(self, nums):
cnt = 0
ans = 0
for num in nums:
if num == 1:
cnt += 1
ans = max(ans, cnt)
else:
cnt = 0
return ans
print(max(maxlen, presentlen))을 추가적으로 실행해야 합니다. 최대 2N번의 max() 호출 발생max() 호출 횟수가 최대 절반 이하로 감소 → 미세한 성능 향상이 있습니다.