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

Python에서 중복 요소를 찾고 마지막으로 발생하는 요소를 삭제하는 프로그램

<시간/>

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