숫자 A의 목록이 있다고 가정하고 모든 중복 숫자를 찾아 마지막 항목을 제거해야 합니다.
따라서 입력이 [10, 30, 40, 10, 30, 50]과 같으면 출력은 [10, 30, 40, 50]
이 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 보고:=새 지도
- d:=새 지도
- 0에서 숫자 크기 범위의 i에 대해
- nums[i]가 d에 없으면
- d[숫자[i]]:=1
- 그렇지 않으면
- d[숫자[i]] :=d[숫자[i]] + 1
- nums[i]가 d에 없으면
- i:=0
- i <숫자의 크기인 동안 do
- n:=d[숫자[i]]
- nums[i]가 표시되지 않으면
- 본[nums[i]]:=1
- 그렇지 않으면
- 본[nums[i]] :=본[nums[i]] + 1
- n이 보이는[nums[i]]와 같고 n> 1이면
- 숫자에서 i번째 요소 삭제
- 나는 :=나는 - 1
- 나는 :=나는 + 1
- 반환 번호
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class Solution: def solve(self, nums): seen={} d={} for i in range(len(nums)): if not nums[i] in d: d[nums[i]]=1 else: d[nums[i]]+=1 i=0 while i < len(nums): n=d[nums[i]] if not nums[i] in seen: seen[nums[i]]=1 else: seen[nums[i]]+=1 if n == seen[nums[i]] and n > 1: nums.pop(i) i-=1 i+=1 return nums ob = Solution() print(ob.solve([10, 30, 40, 10, 30, 50]))
입력
[10, 30, 40, 10, 30, 50]
출력
[10, 30, 40, 50]