July 18, 2023
A를 N개의 정수로 구성된 비어 있지 않은 배열이라고 가정합니다.
한 쌍의 인덱스(P, Q)에 대한 둘의 내적합은 0 ≤ P ≤ Q < N에 대해 절대값 |A[P] + A[Q]|입니다.
예를 들어, 다음 배열 A:
A[0] = 1
A[1] = 4
A[2] = -3에는 (0, 0), (0, 1), (0, 2), (1, 1), (1, 2), (2, 2)의 인덱스 쌍이 있습니다.
function solution(A);이 함수는 N개의 정수로 구성된 비어 있지 않은 배열 A가 주어졌을 때 이 배열의 모든 인덱스 쌍에 대해 2의 최소합을 반환합니다.
예를 들어 다음 배열 A가 주어집니다:
A[0] = 1
A[1] = 4
A[2] = -3이면 위에서 설명한 대로 함수는 1을 반환해야 합니다.
배열 A가 주어졌습니다:
A[0] = -8
A[1] = 4
A[2] = 5
A[3] =-10
A[4] = 3이면 함수는 |(-8) + 5| = 3을 반환해야 합니다.
다음 가정에 대한 효율적인 알고리즘을 작성합니다:
투포인터 이용
function solution(A) {
const arr = A.slice().sort((a, b) => a - b);
let left = 0;
let right = A.length - 1;
let minSum = Number.MAX_SAFE_INTEGER;
while (left <= right) {
let sum = arr[left] + arr[right];
minSum = Math.min(minSum, Math.abs(sum));
if (sum === 0) {
break;
}
if (sum < 0) {
left++;
} else {
right--;
}
}
return minSum;
}