С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
LaYJeL
0 / 0 / 1
Регистрация: 07.12.2016
Сообщений: 11
1

Задача по нахождению К-комплиментарной (K-complementary) пары

05.03.2017, 20:40. Просмотров 814. Ответов 2
Метки нет (Все метки)

Здравствуйте.
Помоги разобраться с задачей.
Условие:
Напишите эффективный алгоритм по нахождению К-комплиментарной (K-complementary) пары в заданном целочисленном (integer) массиве.
Заданный массив A. Пара (i, j) является K-комплиментарной когда K = A [i] + A [j];
Имеется ввиду что массив должен быть двумерным???
Или как искать A[i] и A[j]???
Какое значение должно принимать K ??? Длину масива i*j ???
Объясните пожалуйста!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2017, 20:40
Ответы с готовыми решениями:

Задача: даны пары чисел,нужно сравнить значения с использованием if else и цикла for
Задача: даны пары чисел,нужно сравнить значения с использованием if else и...

Поиск комплиментарной пары транзисторов для УМ НЧ
Посоветуйте отечественные транзисторы разной проводимости комплиментарные,...

Задача по нахождению токов в ветвях
Всем здравствуйте,в задаче мне необходимо найти токи в ветвях(I1 I2 I3).Все...

Задача по нахождению ошибок в коде(язык с)
Есть код: #include <iostream> using namespace std; int main() { int i;...

Задача по нахождению идеальных чисел на заданном промежутке
почему в коде именно к/2 ??? (условие: задача по нахождению идеальных чисе в...

2
HighPredator
5689 / 2008 / 723
Регистрация: 10.12.2010
Сообщений: 5,774
Записей в блоге: 3
09.03.2017, 11:07 2
Цитата Сообщение от LaYJeL Посмотреть сообщение
Имеется ввиду что массив должен быть двумерным???
Нет. Массив одномерный.
Цитата Сообщение от LaYJeL Посмотреть сообщение
Какое значение должно принимать K ???
Можно с клавиатуры ввести например. Главное, чтобы вменяемым было. Условие у вас есть.

Яснее стало?
1
LaYJeL
0 / 0 / 1
Регистрация: 07.12.2016
Сообщений: 11
09.03.2017, 12:50  [ТС] 3
Лучший ответ Сообщение было отмечено LaYJeL как решение

Решение

HighPredator
Да, спасибо большое.
Уже немного разобрался.
Решил таким способом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
        int k = 5;
        int[] arr = new int[]{10, 4, -5, 3, 2, 8, -3, 3, 5, 0, 2, 7, 6, 4,};
 
        int counter = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                if (arr[i] + arr[j] == k) {
                    counter++;
                }
            }
        }
        System.out.println(counter);
Но этот вариант не ефективен.
Нашел решение через HASHMAP
Java
1
2
3
4
5
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        for (int i = 0; i < arr.length; i++) {
            map.merge(k - arr[i], 1, Integer::sum);
        }
        return Arrays.stream(arr).map(element -> map.getOrDefault(element, 0)).sum();
но пока не понял как оно работает.
Буду разбиратся.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2017, 12:50

Нужна целая задача по нахождению длины строчки
Прочитать трехмерный массив из стандартного потока ввода. Массив может...

Задача на разбиение на пары
Задан массив чисел. Каждое число принадлежит одной из двух групп(массив 0 и 1)....

Задача про пары победителей
Дана корзина, в которой размещены и случайно перемешаны M шариков N цветов: M =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru