Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

두 숫자의 합을 확인하는 프로그램은 정렬된 목록에서 최대 k인지 여부는 Python에서

<시간/>

nums라는 숫자 목록이 있고 nums의 요소가 오름차순으로 정렬되어 있다고 가정합니다. 또 다른 값 k가 있습니다. 목록에서 가져온 두 요소의 합이 k가 되는지 여부를 확인해야 합니다. 숫자는 음수 또는 0일 수도 있습니다. 이 문제는 일정한 공간 사용량으로 해결해야 합니다.

따라서 입력이 nums =[-8, -3, 2, 7, 9] k =4와 같으면 출력은 True가 됩니다. 왜냐하면 7과 -3을 취하면 합계는 7 + (- 3) =4, k와 동일합니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • i :=0
  • j :=숫자 크기 - 1
  • 내가
  • cur_sum :=nums[i] + nums[j]
  • cur_sum이 k와 같으면
    • 참 반환
  • 그렇지 않으면 cur_sum
  • 나는 :=나는 + 1
  • 그렇지 않으면
    • j :=j - 1
  • 거짓을 반환
  • 예시

    이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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

    입력

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

    출력

    True