gpt4 book ai didi

java - 环游世界寻找最低点开始

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:36:31 28 4
gpt4 key购买 nike

<分区>

我必须找到最小索引来启动两个数组,如下所示:

cities= [2,4,5,2] gallons = [4,3,1,3]

这个问题涉及2个部分

在第一部分中,我必须确定是否存在有效的起始城市。在上面的例子中,我无法从第一个位置开始,因为城市(城市[0])的第一个位置的值小于加仑(加仑[0] = 4)的第一个位置的值.所以我必须继续寻找正确的索引才能开始。我可以开始旅行的第一个点在索引 1 中,因为 cities[1] >= gallons[1]。此时路径将是:

4-gallons[1] + cities[2] = 4 -3 + 5 = 6
6-gallons[2] + cities[3] = 6 -1 + 2 = 7
7-gallons[3] + cities[0] = 7 -3 + 2 = 6
6-gallons[0] = 6-4 =2

返回将为 1,即我开始旅程的索引。

下一个是无效路径,因此在这种情况下我将不得不返回 -1:

cities= [8,4,1,9] gallons= [10,9,3,5]

在上面的示例中,我从索引 3 开始,因为它是城市大于加仑的第一个位置,所以在这种情况下的操作将是这样的:

注意:该列表是循环的,因此在本例中下一个城市是城市[0] =8,在下面的示例中:

 9-gallons[3] + cities[2] + cities[0] = 9 -5 + 8 = 12 
12-gallons[0] + cities[1] = 12 -10 + 4 = 6
6-gallons[1] + cities[2] = 6 - 9 + 1

由于这个原因,在最后的操作 6-9 = -3 中,我们没有足够的加仑继续旅程,因此响应为 -1,我们不必继续该过程。

下一个是从索引 0 开始的另一种情况,因为 cities[0] >= gallons[0]:

cities[3,2,5,4] gallons = [2,3,4,2]

cities[0] - gallons [0] + cities[1] = 3-2+2 = 3
3 - gallons [1] + cities[2] = 3-3+5 = 5
5 - gallons [2] + cities[3] = 5-4+4 = 5
5 - gallons [3] = 5-2 = 3

这种情况下的响应是 0,因为我们从索引 0 开始并且路线有效,我的意思是我们总是有足够的加仑继续行驶(我们在累计城市总行程减去加仑之间没有负面结果可用,与第二种情况的示例相反)。

下一个是到目前为止我的代码,但我没有通过几个测试用例,我已经完成了几个个人测试用例,但我真的不知道为什么我的代码失败了,有什么想法吗?这两个阵列可以有不同的尺寸。

public static int bestIndexToStartJorney(List<Integer> cities, List<Integer> gallons) {
int n = 0;
int starts = -1;
int total = 0;
if (cities.size() > 0 && gallons.size() > 0 && (cities.size() == gallons.size())) {
n = cities.size();
} else {
return -1;
}
for (int i = 0; i < n; i++) {
if (cities.get(i) >= gallons.get(i)) {
//Define a start point
starts = i;
break;
}
}
//If we have a valid case.
if (starts >= 0) {
total = cities.get(starts);
for (int i = 0; i < n; i++) {
//Constraints
if ((cities.get(i) < 0 || cities.get(i) > 10000) || (gallons.get(i) < 0 || gallons.get(i) > 10000)) {
starts = -1;
break;
}
//Define the current position to transverse circularly
int position = (i + starts) % n;
total += -gallons.get(position);
//If total < gallonsance the path is invalid.
if (total < 0) {
starts = -1;
break;
}
if (position < n - 1 && position + 1 != starts) {
total += cities.get(position + 1);
} else {
if (starts > 0 && position + 1 != starts)
total += cities.get(0);
}
}
}
return starts;
}

约束:

1<=size <= 100000
0<=cities[i] <= 10000
0<=gallons[i] <= 10000

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com