•
처음에 생각 없이 Sliding Window로 접근했다가 잘못 되었음을 깨달았다
•
length of longest subarray를 구하는 문제이기 때문에 첫 등장을 따로 관리해주기만 하면 문제가 없다
•
acc_to_prev_id의 변수명이 마음에 들지 않는다
◦
처음에는 그냥 prev라고 지었다가 acc_to_first_idx, acc_to_idx 등 변수명 정하기가 제일 어렵다
class Solution:
def findMaxLength(self, nums: List[int]) -> int :
res = 0
acc_to_prev_idx = {0: -1}
acc = 0
for i, x in enumerate(nums):
acc += -1 if x == 0 else 1
if acc in prev:
# update the result
res = max(res, i - acc_to_prev_idx[acc])
else:
# set acc to idx on first occurrence
acc_to_prev_idx[acc] = i
return res
Python
복사