LeetCode #2958

Length of Longest Subarray With at Most K Frequency

1개의 풀이 · Python

문제 원문 보기 ↗

SOLUTION INFO

Python · main.py

main.py
import math
class Solution:
    def maxSubarrayLength(self, nums: List[int], k: int) -> int:

        # -1 0 1 2 3 4 5 6 7
        #    1 2 3 1 2 3 1 2
        #  r l
        # r: 오른쪽으로 갈 수 있을때까지 계속 가게 하는거 (k 조건이 허용하는데까지)
        # l: 그냥 한번씩만 옆으로 갈꺼야.

        N = len(nums)
        l, r = 0, 0
        freq = defaultdict(int)

        answer = 0

        # 여기 l은 일단 이해 못해도 돼.
        # 1 2 3 1 2 3 1 2
        for l in range(N):
            # r은 상남자야 ! 갈 수 있을때까지 갔어
            while r < N and freq[nums[r]] + 1 <= k:
                freq[nums[r]] += 1
                r += 1

            # l ~ r - 1 구간이 조건에 맞는 구간 (k 이하)
            answer = max(answer, r - l)

            # l은 어떻게 할껀데?
            freq[nums[l]]-=1

        return answer

        # 이걸보고 어떻게 투포인터를 떠올림;
        # 미친문제, 이미 유형화 된 거인지 알아보기

        # 각 수가 k번씩 나올 수 있는 선에서 가장긴
        # global answer
        # answer = 0
        # dict={}
        # cnt = 0

        # check = 0
        # # for i in range(len(nums)):
        # left = 0
        # right = len(nums)
        # while(left<=right):
        #     dict={}
        #     cnt = 0
        #     for j in range(left, right):
        #         # print('j: ', nums[j])
        #         item = nums[j]
        #         if item in dict:
        #             if dict[item]>=k:
        #                 dict={}
        #                 answer=max(cnt, answer)
        #                 cnt=0



        #         if item not in dict:
        #             dict[item]=1
        #             cnt+=1
        #         else:
        #             dict[item]+=1
        #             cnt+=1
        #     answer = max(answer, cnt)
        #     left+=1
        #     dict[left]-=1

        # #     print('cnt: ',cnt)
        # #     print('')
        # # print('^^', cnt)
        # # print()

        # # print('answer: ', answer)
        # return max(answer, cnt)

SOLUTION DESCRIPTION

풀이 설명

등록된 풀이 설명이 없습니다.