Максимальное использование транспортного средства.Нахождение максимального значения из 2 массивов - PullRequest
0 голосов
/ 21 октября 2018

Я пытаюсь решить простую задачу оптимизации и предложил решение.Просто интересно, правильно это или нет.Вот описание проблемы

Существует транспортное средство, которое может проехать общее определенное максимальное расстояние, например 3000 миль, после чего оно нуждается в обслуживании.Есть 2 массива, один массив outgoing и один массив returning.Каждый элемент массива обозначает расстояние.Мне нужно придумать 2 числа, одно из массива outgoing, а другое из массива incoming, которое максимально использует автомобиль.Скажите, могу ли я использовать общее расстояние 3000, оно самое лучшее или самое близкое к нему.Я написал для нее программу и надеялся, что смогу получить информацию от других, если она правильная или имеет недостаток.

public class Vehicle {
    public static void main(String[] args) {
        Integer[] outgoing = {2710,300,2500,2800,700};
        Integer[] returning = {2200,289,490};
        int l1=0,l2=0;
        Arrays.sort(outgoing, Collections.reverseOrder());
        Arrays.sort(returning);
        int range = 3000;
        int max = 0;
        int out = 0;
        int ret = 0;
        while(l1<outgoing.length && l2<returning.length) {
            int sum = outgoing[l1]+returning[l2];
           if (sum<=range && sum>max) {
               max = sum;
               out = outgoing[l1];
               ret = returning[l2];
           }
           if(sum>range) {
               l1++;
           } else {
               l2++;
           }
        }
        System.out.println(max);
        System.out.println(out);
        System.out.println(ret);
    }
}

Подход, который я использую, заключается в том, что я сортирую массив outgoing в обратном порядке.порядок и returning в естественном порядке.Затем я пытаюсь найти максимально возможную сумму, выбирая один элемент из каждого массива.Если временная сумма превышает максимально допустимое расстояние, я перемещаю указатель массива в порядке убывания, в противном случае я перемещаю указатель массива в порядке возрастания.

1 Ответ

0 голосов
/ 23 октября 2018

Что я понимаю из вашего описания, так это то, что мы должны найти максимальное суммирование двух целых чисел, которое меньше или равно range, и одно целое число берется из массива outgoing, а другое - из returning массив.

Недавно я решил похожую проблему в HackerRank и написал редакционную статью об этом здесь .Итак, ваш подход аналогичен подходу № 3, описанному в редакционной статье.Итак, это правильный подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...