숫자 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]