@MarkNaydovich
Студент IT

Как уменьшить время выполнения программы?

Даны два массива целых чисел одинаковой длины A[0..n-1] и B[0..n-1]. Необходимо найти первую пару индексов i0 и j0, , , где 0 ≤ i < n, 0 ≤ j < n, i ≤ j}. Время работы - O(n). n ≤ 100000.
Код:
package com.company;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int [] a = new int [n];
int [] b = new int [n];
for (int i = 0; i < n; ++i)
a[i] = sc.nextInt();
for (int j = 0; j < n; ++j)
b[j] = sc.nextInt();
int in = 0;
int jn = 0;
int w = a[in] + b[jn];
for (int i = 0; i < n; ++i)
for (int j = i; j < n; ++j)
if (a[i] + b[j] > w) {
w = a[i] + b[j];
in = i;
jn = j;
}
System.out.print(in + " " + jn);
}
}
  • Вопрос задан
  • 211 просмотров
Пригласить эксперта
Ответы на вопрос 1
LaRN
@LaRN
Senior Developer
Если нужна только первая пара, то не нужно цикцы крутить до конца. Прерывайте их как только в первый раз сработает if (a[i] + b[j] > w)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы