[파워 풀 다이 어 리] 697 배열 의 도.
5582 단어 다이 어 리
댓 글 보니까 또 하나의 독해?예 를 들 어 보 는 것 도 쉬 운 데.
비어 있 지 않 고 마이너스 만 포함 하 는 정수 배열 nums 를 지정 합 니 다. 배열 의 정 의 는 지수 그룹 에서 모든 요소 가 나타 나 는 빈도수 의 최대 값 입 니 다.nums 와 같은 크기 의 최 단 연속 서브 그룹 을 찾 아 길 이 를 되 돌려 주 는 것 이 임무 입 니 다.
도: 배열 의 개수.nums 와 같은 크기 의 최 단 연속 서브 그룹 을 구하 고 길 이 를 되 돌려 줍 니 다.
알고리즘 사고
class Solution:
def findShortestSubArray(self, nums) -> int:
d={}
for i in nums:
d[i]=d.get(i,0)+1
ls=sorted(d.items(),key=lambda x:x[1],reverse=True)
MAX=ls[0][1]
nums='#'+'#'.join(map(str,nums))+'#'
MIN=float('inf')
for i in ls:
if i[1]!=MAX:break
l,r=nums.find('#'+str(i[0])+'#'),nums.rfind('#'+str(i[0])+'#')
MIN=min(MIN,nums[l:r].count('#')+1)
return MIN
실행 시: 432 ms, 모든 Python 3 제출 에서 31.85% 의 사용 자 를 격파 하 였 습 니 다.