nums라고 하는 숫자 목록과 또 다른 값 k가 있다고 가정하면 목록에서 합이 k인 고유한 요소 3개를 찾을 수 있는지 확인해야 합니다.
따라서 입력이 nums =[11, 4, 6, 10, 5, 1] k =20과 같으면 합이 20인 숫자 [4,6,10]이 있으므로 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
목록 번호 정렬
-
l :=0, r :=숫자 크기 - 1
-
동안 l
-
t :=k − nums[l] − nums[r]
-
nums[r − 1]
-
l :=l + 1
-
루프에서 나오다
-
-
범위 l + 1에서 r의 m에 대해 수행
-
nums[m]> t이면
-
r :=r − 1
-
루프에서 나오다
-
-
nums[m]이 t와 같으면
-
참을 반환
-
-
-
-
거짓을 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
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