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