Computer >> Máy Tính >  >> Lập trình >> Python

Hai tổng bằng Python

Giả sử chúng ta có một mảng các số nguyên. Chúng ta phải trả về các chỉ số của hai số nguyên, sao cho nếu chúng ta cộng chúng lại, chúng ta sẽ đạt đến một mục tiêu cụ thể cũng được đưa ra. Ở đây chúng ta sẽ lấy một giả định, đó là luôn có một giải pháp duy nhất trong mảng, vì vậy sẽ không có hai bộ chỉ số nào cho cùng một mục tiêu.

Ví dụ:giả sử mảng giống như A =[2, 8, 12, 15] và tổng mục tiêu là 20. Sau đó, nó sẽ trả về chỉ số 1 và 2, là A [1] + A [2] =20.

Để giải quyết điều này, chúng ta sẽ lặp qua từng phần tử của mảng. Vì vậy, hãy làm theo các bước sau để giải quyết vấn đề này.

  • Xác định một bản đồ để lưu giữ kết quả được gọi là res
  • Đối với chỉ số i trong phạm vi từ 0 đến n - 1 (với n là số phần tử trong mảng)
    • if target - A [i] có trong res
      • trả về res [target - A [i]] và i dưới dạng chỉ số
    • Nếu không, hãy đặt tôi vào res là res [A [i]] - =i

Hãy cho chúng tôi xem việc triển khai để hiểu rõ hơn

Ví dụ

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))

Đầu vào

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

Đầu ra

[1, 2]