Удобно для того чтобы положить что-то в Интернете, посмотреть на время. Код может быть ошибкой и не является оптимальным решением для справочных целей.
Название: массив ввода и числа в порядке возрастания, найти два числа в массиве, и таким образом, чтобы они точно цифровой вход.
Требуемое время сложность О (п). При наличии несколько равно цифровой вход и цифровой выход может быть любой парой.
Например, цифровой входной массив 1,2,3,4,7,11,12,15 и 15. С 4 + 11 = 15, выходной сигнал 4 и 11.
Этот вопрос очень просто, такой журнал, чтобы определить, есть ли. Конечно, вы можете также поместить число всех имеющих право и все выходные, чтобы узнать. Следующий номер кода для удовлетворения потребностей производства, но не учитывает случай повторения, например, есть два 4, два 11. Только в этом случае выдает пару 11 + 4 = 15.
Основная идея: Так как массив упорядочен, поэтому начните с головы и хвоста, глядя двигаться ближе к центру, чтобы соответствовать условиям пар чисел.
Код выглядит следующим образом (с #):
}
10
11 в то время (начало <конец)
12 {
13 , если (туАггау [начало] + туАггау [конец]> значение)
14 {
15 end--;
16 }
17 еще
18 {
19 , если (туАггау [начало] + туАггау [конец] <значение)
20 {
21 начала ++;
22 }
23 еще
24 {
25 Console.WriteLine ( " {0} + {1} = {2} " , MyArray [начало ++], туАггау [end--], значение);
26 // не рассматривать дублированные пары 27 } 28 } 29 } 30 }
Воспроизводится в: https: //www.cnblogs.com/CSharpSPF/archive/2012/04/03/2431536.html