nums라고 하는 숫자 목록과 다른 값 k가 있다고 가정하고 nums(a, b, c)에서 |a + b + c − k| 최소화되고 절대 차이를 반환합니다.
따라서 입력이 nums =[2, 5, 25, 6] k =14와 같으면 출력은 1이 됩니다. 마치 [2, 5, 6]을 취하면 14에 가장 가깝고 절대 차이는 다음과 같습니다. |13 - 14| =1.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
목록 번호 정렬
-
답변 :=1^9
-
범위 0에서 숫자 크기까지의 i에 대해
-
j :=i + 1
-
k :=숫자의 크기 - 1
-
동안 j
-
s :=숫자[i] + 숫자[j] + 숫자[k]
-
s <=target이면
-
ans :=ans 및 target의 최소값 - s
-
j :=j + 1
-
-
그렇지 않으면
-
ans :=ans와 s의 최소값 - target
-
k :=k − 1
-
-
-
-
반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class Solution: def solve(self, nums, target): nums.sort() ans = 1e9 for i in range(len(nums)): j = i + 1 k = len(nums) − 1 while j < k: s = nums[i] + nums[j] + nums[k] if s <= target: ans = min(ans, target - s) j += 1 else: ans = min(ans, s - target) k −= 1 return ans ob1 = Solution() nums = [2, 5, 25, 6] k = 14 print(ob1.solve(nums, k))
입력
[2, 5, 25, 6], 14
출력
1