MaxDiff проблема хакерранка - оптимизировать код как время ожидания - PullRequest
0 голосов
/ 14 января 2020

Ниже моя реализация для maxdiff проблемы на хакерранке. Он прошел все тестовые случаи, кроме 1, где тайм-аут подачи. Помогите мне оптимизировать его.

import java.io.*;
import java.util.*;

public class Solution {

    private static final Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        int n = Integer.parseInt(scanner.nextLine());
        if(n==0 || n==1)
            System.out.println(0);;
        String s=scanner.nextLine();
        String ar[] = s.split("\\s+");
        int[] a=new int[n];
        for(int i=0;i<n;i++)
        {
            a[i]=Integer.parseInt(ar[i]);
        }
        int max, min;
        long sum=0;
        for(int i=0;i<n;i++)
        {
            max=a[i];
            min=a[i];

            for(int j=i+1;j<n;j++)
            {
                if(a[j]>max)
                    max=a[j];
                if(a[j]<min)
                    min=a[j];

                sum+=max-min;
            }
        }

        System.out.println(sum);
    }
}

Сбой тестового примера слишком велик, чтобы его можно было прикрепить.

1 Ответ

0 голосов
/ 14 января 2020

Я вижу одну проблему.

Проблема заключается в обработке n == 0 и n == 1. Вы должны вернуться после печати 0: Вот что вы должны иметь.

if (n==0 || n==1) {
    if (n==1)
        scanner.nextLine();
    System.out.println(0);
    return;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...