【问题标题】:Maximum utilization of a vehicle. Finding max value from 2 arrays最大限度地利用车辆。从2个数组中查找最大值
【发布时间】:2018-10-21 17:46:02
【问题描述】:

我正在尝试解决一个简单的优化问题并提出了解决方案。只是想知道它是否正确。这是问题描述

例如,有一种车辆可以行驶一定的最大距离,例如 3000 英里,之后需要维修。有2个数组,一个outgoing数组和一个returning数组。每个数组元素表示距离。我必须从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 进行排序。然后我尝试通过从每个数组中选择一个元素来找到可能的最大总和。如果临时总和超过允许的最大距离,我将按降序移动数组的指针,否则按升序移动数组的指针。

【问题讨论】:

  • 我不太确定您要达到的目标。您可以尝试编辑答案并澄清吗?您想要那些应该很快就可以维修的汽车吗?
  • 为了更清楚地解释它,有一个车队与 Q 的部分关系不大。但是当一辆汽车被拣选交付时,它有一个最大距离的限制它可以行驶而不是服务。因此,目标是给定车队中的一辆具有行驶距离限制的汽车,该汽车应该采取什么样的行程来返回和返回路径。这有帮助吗?基本上选择一个传出距离和返回距离,以便在给定汽车的最大行驶距离约束的情况下最大限度地利用汽车

标签: java algorithm sorting merge


【解决方案1】:

阅读您的描述,我了解到我们必须找到两个小于或等于 range 的整数的最大总和,并且一个整数取自 outgoing 数组,另一个取自 @ 987654325@ 数组。

最近,我在HackerRank 解决了类似的问题,并在here 上写了一篇社论。因此,您的方法类似于社论中描述的方法编号 - 3。所以,这是一个正确的做法。

【讨论】:

    猜你喜欢
    • 2021-02-18
    • 1970-01-01
    • 2022-01-17
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 2012-08-14
    相关资源
    最近更新 更多