728x90
🔗 Problem Link
https://leetcode.com/problems/longest-subarray-of-1s-after-deleting-one-element/description/
❔Thinking
- 0과 1로 숫자 배열 nums가 주어질 때, 0 한 개를 제거하여 만들 수 있는 가장 긴 1 부분수열의 길이를 반환한다.
- [1,1,0,1] 이라면 111이므로 3 반환
💻Solution
def longestSubarray(self, nums: List[int]) -> int:
delete_cnt = 1
left = 0
longest_len = 0
for right in range(len(nums)):
if nums[right] == 0:
delete_cnt -= 1
while delete_cnt < 0:
if nums[left] == 0:
delete_cnt += 1
left += 1
longest_len = max(longest_len, right-left)
return longest_len
🗝️keypoint
- 현시점에서 0을 제거할 수 있는 횟수를 delete_cnt로 기록하고, 이를 0이상의 값으로 유지하면서 window를 갱신한다.
'코딩테스트 > Python' 카테고리의 다른 글
[LeetCode] 1732. Find the Highest Altitude (0) | 2025.04.29 |
---|---|
[LeetCode] 1004. Max Consecutive Ones III (0) | 2025.04.26 |
[LeetCode] 1456. Maximum Number of Vowels in a Substring of Given Length (0) | 2025.04.24 |
[Baekjoon] 1013. Contact (0) | 2025.04.11 |
[LeetCode] 643. Maximum Average Subarray I (0) | 2025.04.10 |