Files
freeCodeCamp/curriculum/challenges/russian/08-coding-interview-prep/algorithms/pairwise.russian.md
2020-06-30 14:21:26 +05:30

3.5 KiB
Raw Blame History

id, title, challengeType, forumTopicId, localeTitle
id title challengeType forumTopicId localeTitle
a3f503de51cfab748ff001aa Pairwise 5 301617 парный

Description

Учитывая массив arr , найдите пары элементов, сумма которых равна второму аргументу arg и возвращает сумму их индексов. Вы можете использовать несколько пар, которые имеют одинаковые числовые элементы, но разные индексы. Каждая пара должна использовать самые низкие доступные индексы. Как только элемент был использован, его нельзя повторно использовать для соединения с другим элементом. Например, pairwise([1, 1, 2], 3) создает пару [2, 1] используя 1 в индексе 0, а не 1 в индексе 1, потому что 0 + 2 <1 + 2. Например, pairwise([7, 9, 11, 13, 15], 20) возвращает 6 . Парами, суммирующимися до 20, являются [7, 13] и [9, 11] . Затем мы можем записать массив с их индексами и значениями.
Индекс 0 1 2 3 4
Стоимость 7 9 11 13 15
Ниже мы возьмем соответствующие индексы и добавим их. 7 + 13 = 20 → Индексы 0 + 3 = 3
9 + 11 = 20 → Индексы 1 + 2 = 3
3 + 3 = 6 → Return 6 забудьте использовать Read-Search-Ask, если вы застряли. Попробуйте подключить программу. Напишите свой собственный код.

Instructions

Tests

tests:
  - text: <code>pairwise([1, 4, 2, 3, 0, 5], 7)</code> should return 11.
    testString: assert.deepEqual(pairwise([1, 4, 2, 3, 0, 5], 7), 11);
  - text: <code>pairwise([1, 3, 2, 4], 4)</code> should return 1.
    testString: assert.deepEqual(pairwise([1, 3, 2, 4], 4), 1);
  - text: <code>pairwise([1, 1, 1], 2)</code> should return 1.
    testString: assert.deepEqual(pairwise([1, 1, 1], 2), 1);
  - text: <code>pairwise([0, 0, 0, 0, 1, 1], 1)</code> should return 10.
    testString: assert.deepEqual(pairwise([0, 0, 0, 0, 1, 1], 1), 10);
  - text: <code>pairwise([], 100)</code> should return 0.
    testString: assert.deepEqual(pairwise([], 100), 0);

Challenge Seed

function pairwise(arr, arg) {
  return arg;
}

pairwise([1,4,2,3,0,5], 7);

Solution

function pairwise(arr, arg) {
  var sum = 0;
  arr.forEach(function(e, i, a) {
    if (e != null) {
      var diff = arg-e;
      a[i] = null;
      var dix = a.indexOf(diff);
      if (dix !== -1) {
        sum += dix;
        sum += i;
        a[dix] = null;
      }
    }
  });
  return sum;
}

pairwise([1,4,2,3,0,5], 7);