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

โปรแกรมตรวจสอบเราสามารถหาสามองค์ประกอบที่ไม่ซ้ำกัน ose sum เหมือนกับ k หรือไม่ Python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums และอีกค่าหนึ่งคือ k เราต้องตรวจสอบว่าเราสามารถหาองค์ประกอบที่ไม่ซ้ำกันสามรายการในรายการที่มีผลรวมเป็น k หรือไม่

ดังนั้น หากอินพุตเป็น nums =[11, 4, 6, 10, 5, 1] ​​k =20 ผลลัพธ์จะเป็น True เนื่องจากเรามีตัวเลข [4,6,10] ซึ่งมีผลรวมเป็น 20

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • เรียงเลขรายการ

  • l :=0, r :=ขนาดของ nums − 1

  • ในขณะที่ l

    • t :=k − nums[l] − nums[r]

    • ถ้า nums[r − 1]

      • l :=l + 1

      • ออกจากวง

    • สำหรับ m ในช่วง l + 1 ถึง r ทำ

      • ถ้า nums[m]> t แล้ว

        • r :=r − 1

        • ออกจากวง

      • ถ้า nums[m] เหมือนกับ t แล้ว

        • คืนค่า True

  • คืนค่าเท็จ

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution:
   def solve(self, nums, k):
      nums.sort()
      l, r = 0, len(nums) − 1
      while l < r − 1:
         t = k − nums[l] − nums[r]
         if nums[r − 1] < t:
            l += 1
            continue
         for m in range(l + 1, r):
            if nums[m] > t:
               r −= 1
               break
            if nums[m] == t:
               return True
      return False
ob1 = Solution()
nums = [11, 4, 6, 10, 5, 1]
k = 20
print(ob1.solve(nums, k))

อินพุต

[11, 4, 6, 10, 5, 1], 20

ผลลัพธ์

True