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

โปรแกรมตรวจสอบจำนวนแฝดจากอาร์เรย์ที่มีผลรวมน้อยกว่าเป้าหมายหรือไม่ใช่Python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums และค่าเป้าหมายอื่น เราต้องหาจำนวนสามเท่า (i

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[−2, 6, 4, 3, 8], target =12 ผลลัพธ์จะเป็น 5 เนื่องจากแฝดสามคือ:[-2,6,4], [-2 ,6,3], [−2,4,3], [-2,4,8], [−2,3,8]

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

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

  • ตอบ :=0

  • n :=ขนาดของ nums

  • สำหรับฉันอยู่ในช่วง 0 ถึง n-1 ทำ

    • k :=n − 1

    • สำหรับ j ในช่วง i + 1 ถึง n-1 ให้ทำ

      • ในขณะที่ k> j และ nums[i] + nums[k] + nums[j]>=เป้าหมาย ทำ

        • k :=k − 1

      • ถ้า j เหมือนกับ k แล้ว

    • ans :=ans + k − j

  • กลับมาอีกครั้ง

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

ตัวอย่าง

class Solution:
   def solve(self, nums, target):
      nums.sort()
      ans = 0
      n = len(nums)
      for i in range(n):
         k = n − 1
         for j in range(i + 1, n):
            while k > j and nums[i] + nums[k] + nums[j] >=
target:
               k -= 1
            if j == k:
               break
            ans += k − j
      return ans
ob1 = Solution()
nums = [−2, 6, 4, 3, 8]
target = 12
print(ob1.solve(nums, target))

อินพุต

[-2, 6, 4, 3, 8], 12

ผลลัพธ์

5