import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param grass int整型一维数组
* @param cost int整型一维数组
* @return int整型
*/
public int can_complete_circuit (int[] grass, int[] cost) {
// write code here
int sz = grass.length;
int remain = 0;
int res = -1;
if (sz > 0 && sz == cost.length) {
for (int i = 0; i < sz; i++) {
remain += grass[i] - cost[i];
}
if (remain >= 0) {
remain = 0;
res = 0;
for (int i = 0; i < sz; i++) {
remain += grass[i] - cost[i];
if (remain < 0) {
remain = 0;
res = i + 1;
}
}
res++;
}
}
return res;
}
}
编程语言是Java
这道题考察
- 数组的遍历与操作
- 条件判断与循环
以下是代码的解释:
- can_complete_circuit 方法接受两个整数数组 grass 和 cost 作为参数,表示每个牛棚的草料数量和从一个牛棚到下一个牛棚所需的花费。
- 初始化变量 sz 表示牛棚数量,remain 表示剩余草料和花费的差值,以及 res 表示结果,默认为 -1。
- 判断牛棚数量是否大于0,并且草料数组和花费数组的长度是否一致。
- 在循环中,遍历每个牛棚,累加剩余草料和花费的差值。
- 如果剩余草料和花费的差值大于等于0,则意味着可以走完一周,初始化 remain 为0,res 为0。
- 再次循环遍历每个牛棚,累加剩余草料和花费的差值。
- 如果剩余草料和花费的差值小于0,说明从当前牛棚出发无法走完一周,将 remain 重置为0,res 更新为下一个牛棚的下标(即 i+1)。
- 最终返回结果 res,表示从哪个牛棚出发能够沿顺序走完环形路线的一个周,或者返回-1表示无解。

京公网安备 11010502036488号