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

Chương trình kiểm tra tổng của hai số có lên đến k từ Danh sách đã sắp xếp hay không bằng Python

Giả sử chúng ta có một danh sách các số được gọi là nums và các phần tử trong nums được sắp xếp theo thứ tự tăng dần. Chúng ta cũng có một giá trị k khác, chúng ta phải kiểm tra xem hai phần tử lấy từ danh sách có cộng lại thành k hay không. Các con số này cũng có thể là số âm hoặc 0. Chúng ta phải giải quyết vấn đề này với mức sử dụng không gian liên tục.

Vì vậy, nếu đầu vào giống như nums =[-8, -3, 2, 7, 9] k =4, thì đầu ra sẽ là True, bởi vì nếu chúng ta lấy 7 và -3, thì tổng là 7 + (- 3) =4, giống với k.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • i:=0
  • j:=kích thước của nums - 1
  • while i
  • cur_sum:=nums [i] + nums [j]
  • nếu cur_sum giống với k, thì
    • trả về True
  • ngược lại khi cur_sum
  • i:=i + 1
  • nếu không,
    • j:=j - 1
  • trả về Sai
  • Ví dụ

    Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

    def solve(nums, k):
       i = 0
       j = len(nums) - 1
       while i < j:
          cur_sum = nums[i] + nums[j]
          if cur_sum == k:
             return True
          elif cur_sum < k:
             i += 1
          else:
             j -= 1
       return False
    
    nums = [-8, -3, 2, 7, 9]
    k = 4
    print(solve(nums, k))

    Đầu vào

    [-8, -3, 2, 7, 9], 4
    

    Đầu ra

    True