java - 最大限度地利用车辆。从2个数组中查找最大值
问题描述
我正在尝试解决一个简单的优化问题并提出了解决方案。只是想知道它是否正确。这是问题描述
例如,有一种车辆可以行驶一定的最大距离,例如 3000 英里,之后需要维修。有2个数组,1个outgoing
数组和1个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
自然顺序对数组进行排序。然后我尝试通过从每个数组中选择一个元素来找到可能的最大总和。如果临时总和超过允许的最大距离,我将按降序移动数组的指针,否则我按升序移动数组的指针。
解决方案
我理解阅读您的描述是,我们必须找到两个小于或等于的整数的最大总和,range
并且一个整数取自outgoing
数组,另一个整数取自returning
数组。
最近,我在HackerRank中解决了类似的问题,并在这里写了一篇社论。因此,您的方法类似于社论中描述的方法编号 - 3。所以,这是一个正确的做法。
推荐阅读
- javascript - 无法使用 BrowserWindow.loadURL() 在 Electron 中包装网页
- ruby-on-rails - Vue Js & Rails:如何显示附有 blob 的图像
- python - 在 Eager 模式下使用 pdb 在 TensorFlow 中调试回调
- javascript - 隐藏在内容后面的下拉菜单
- javascript - TestCafe 角色未返回指定的夹具页面
- html - 怎么没有添加额外的 html 表单信息?
- c# - 如何使用用户管理器功能制作网络核心库
- node.js - 通过 Angular 应用程序的 Node.js POST 请求返回错误 404“未找到”
- python - Numpy polyfit:协方差矩阵的缩放可能存在错误?
- python - 如何通过sql或python从表中获取包含字符串列表列的表