nums라는 숫자 목록이 있다고 가정하고 첫 번째 요소와 마지막 요소가 동일한 하위 목록의 수를 찾아야 합니다.
따라서 입력이 nums =[10, 15, 13, 10]과 같으면 첫 번째와 마지막 요소가 동일한 하위 목록이 [10], [15], [13], [ 10], [10, 15, 13, 10].
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
num_sublists :=숫자 크기
-
d :=빈 지도
-
숫자의 각 n에 대해 수행
-
d[n] :=d[n] + 1
-
-
d에 있는 요소의 각 숫자 k와 해당 빈도 v에 대해 수행
-
v가 1과 같지 않으면
-
num_sublists :=num_sublists +((v-1)의 몫 *(v) /2)
-
-
-
num_sublists
반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
from collections import defaultdictclass 솔루션:def solve(self, nums):num_sublists =len(nums) d =defaultdict(int) for n in nums:d[n] +=1 for k,v in d.items( ):v !=1:num_sublists +=(v-1)*(v)//2 return num_sublistsob =Solution()nums =[10, 15, 13, 10]print(ob.solve(nums))사전>입력
[10, 15, 13, 10]출력
5