Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

สองผลรวมใน Python


สมมติว่าเรามีอาร์เรย์ของจำนวนเต็ม เราต้องคืนค่าดัชนีของจำนวนเต็มสองตัว เช่น ถ้าเรารวมเข้าด้วยกัน เราจะไปถึงเป้าหมายเฉพาะที่ได้รับ ในที่นี้ เราจะใช้สมมติฐานหนึ่งข้อ นั่นคือจะมีโซลูชันเฉพาะตัวเดียวในอาร์เรย์เสมอ ดังนั้นจึงไม่มีดัชนีสองชุดสำหรับเป้าหมายเดียวกัน

ตัวอย่างเช่น สมมติว่าอาร์เรย์เป็นเหมือน A =[2, 8, 12, 15] และผลรวมเป้าหมายคือ 20 จากนั้นจะคืนค่าดัชนี 1 และ 2 เป็น A[1] + A[2] =20

เพื่อแก้ปัญหานี้ เราจะวนรอบแต่ละองค์ประกอบของอาร์เรย์ ดังนั้นให้ทำตามขั้นตอนเหล่านี้เพื่อแก้ปัญหานี้

  • กำหนดหนึ่งแผนที่เพื่อเก็บผลลัพธ์ที่เรียกว่า res
  • สำหรับดัชนี i ในช่วง 0 ถึง n – 1 (โดยที่ n คือจำนวนองค์ประกอบในอาร์เรย์)
    • ถ้าเป้าหมาย − A[i] มีอยู่ใน res
      • return res[target − A[i]] และ i เป็นดัชนี
    • มิฉะนั้นให้ใส่ i ลงใน res เป็น res[A[i]] − =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]