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

파이썬의 두 합

<시간/>

정수 배열이 있다고 가정합니다. 두 정수의 인덱스를 반환해야 하며, 이를 더하면 주어진 특정 목표에 도달할 수 있습니다. 여기에서는 어레이에 항상 하나의 고유한 솔루션이 있으므로 동일한 대상에 대한 두 개의 인덱스 세트가 존재하지 않는다는 가정을 합니다.

예를 들어 배열이 A =[2, 8, 12, 15]이고 목표 합계가 20이라고 가정합니다. 그러면 A[1] + A[2] =20과 같이 인덱스 1과 2를 반환합니다.

이 문제를 해결하기 위해 배열의 각 요소를 반복합니다. 따라서 이 문제를 해결하려면 다음 단계를 따르세요.

  • res라는 결과를 저장할 하나의 지도 정의
  • 0 ~ n – 1 범위의 인덱스 i의 경우(여기서 n은 배열의 요소 수)
    • 대상 - A[i]가 res
        에 있는 경우
      • res[target − A[i]] 및 i를 인덱스로 반환
    • 그렇지 않으면 res[A[i]] − =i와 같이 res에 i를 넣습니다.

더 나은 이해를 위해 구현을 살펴보겠습니다.

class Solution(object):
   def twoSum(self, nums, target):
      """
      :type nums: List[int]
      :type target: int
      :rtype: List[int]
      """
      required = {}
      for i in range(len(nums)):
         if target - nums[i] in required:
            return [required[target - nums[i]],i]
         else:
            required[nums[i]]=i
input_list = [2,8,12,15]
ob1 = Solution()
print(ob1.twoSum(input_list, 20))

입력

input_list = [2,8,12,15]
target = 20

출력

[1, 2]