Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 배열을 증가하는 시퀀스로 나누기

<시간/>

nums라고 하는 양의 정수로 구성된 비감소 배열과 정수 K가 있다고 가정하면 이 배열을 길이가 K 이상인 하나 이상의 분리된 증가 부분 시퀀스로 나눌 수 있는지 알아내야 합니다.

따라서 입력이 nums =[1,2,2,3,3,4,4], K =3과 같으면 이 배열은 [1, 2,3,4] 및 [2,3,4] 길이가 각각 3 이상입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • d :=새 지도

  • 요구:=0

  • 숫자로 된 각 i에 대해 수행

    • i가 d에 없으면 0이 아닌 경우

      • d[i]:=1

    • 그렇지 않으면

      • d[i] :=d[i] + 1

    • req :=req의 최대값, d[i]

  • req*K <=숫자 크기

    일 때 true를 반환합니다.

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class Solution(object):
   def canDivideIntoSubsequences(self, nums, K):
      d = {}
      req = 0
      for i in nums:
         if i not in d:
            d[i]=1
         else:
            d[i]+=1
            req = max(req,d[i])
      return req*K<=len(nums)
ob = Solution()
print(ob.canDivideIntoSubsequences([1,2,2,3,3,4,4],3))

입력

[1,2,2,3,3,4,4]. 3

출력

True