nums라는 숫자 목록과 다른 값 대상이 있다고 가정하고 nums[i] + nums[j] + nums[k]
따라서 입력이 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 :=숫자 크기
-
범위 0에서 n−1에 있는 i에 대해 수행
-
k :=n − 1
-
i + 1 ~ n−1 범위의 j에 대해
-
k> j 및 nums[i] + nums[k] + nums[j]>=target, do
-
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