JavaScript: эффективные методы поиска суммы пар в отсортированном массиве

Задача, которую вы упомянули, «отсортированный массив по двум суммам в Javascript», относится к поиску пары чисел в отсортированном массиве, сумма которых равна определенному целевому значению. Я предоставлю вам несколько способов добиться этого в JavaScript:

Метод 1: два указателя
Вы можете использовать метод двух указателей для эффективного решения этой задачи с временной сложностью O(n) и пространственной сложностью O(1). Вот код:

function twoSumSortedArray(nums, target) {
  let left = 0;
  let right = nums.length - 1;
  while (left < right) {
    const sum = nums[left] + nums[right];
    if (sum === target) {
      return [left, right]; // or return [nums[left], nums[right]] if you want the actual numbers
    } else if (sum < target) {
      left++;
    } else {
      right--;
    }
  }
  return []; // return an empty array if no such pair exists
}

Метод 2: двоичный поиск
Другой подход заключается в использовании двоичного поиска для поиска дополнения каждого числа в массиве. Это решение имеет временную сложность O(n log n) и пространственную сложность O(1). Вот код:

function twoSumSortedArray(nums, target) {
  for (let i = 0; i < nums.length; i++) {
    const complement = target - nums[i];
    let low = i + 1;
    let high = nums.length - 1;
    while (low <= high) {
      const mid = Math.floor((low + high) / 2);
      if (nums[mid] === complement) {
        return [i, mid]; // or return [nums[i], nums[mid]] if you want the actual numbers
      } else if (nums[mid] < complement) {
        low = mid + 1;
      } else {
        high = mid - 1;
      }
    }
  }
  return []; // return an empty array if no such pair exists
}