바구니에 담긴 과일
fruits
로 표시되며 여기서 fruits[i]
는 나무가 생산하는 과일의 유형입니다.가능한 한 많은 과일을 수집하고 싶습니다. 그러나 소유자는 따라야 하는 몇 가지 엄격한 규칙을 가지고 있습니다.
정수 배열
ith
이 주어지면 선택할 수 있는 최대 과일 수를 반환합니다.예 1:
입력: 과일 = [1,2,1]
출력: 3
설명: 3개의 나무 모두에서 선택할 수 있습니다.
예 2:
입력: 과일 = [0,1,2,2]
출력: 3
설명: 트리 [1,2,2]에서 선택할 수 있습니다.
첫 번째 트리에서 시작했다면 [0,1] 트리에서만 선택합니다.
예 3:
입력: 과일 = [1,2,3,2,2]
출력: 4
설명: 트리 [2,3,2,2]에서 선택할 수 있습니다.
첫 번째 트리에서 시작했다면 트리[1,2]에서만 선택합니다.
제약:
fruits
1 <= fruits.length <= 105
해결책:
class Solution:
def totalFruit(self, fruits: List[int]) -> int:
n = len(fruits)
i = 0
j = 0
ctr = {}
mlen = 0
while i <= j and j < n:
ctr[fruits[j]] = ctr.get(fruits[j], 0) + 1
j += 1
if len(ctr) <= 2:
mlen = max(mlen, j - i)
else:
while len(ctr) > 2 and i < j:
ctr[fruits[i]] -= 1
if ctr[fruits[i]] == 0:
del ctr[fruits[i]]
i += 1
return mlen
Reference
이 문제에 관하여(바구니에 담긴 과일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/fruit-into-baskets-g5i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)