题解 | #大胃王牛牛# java

大胃王牛牛

https://www.nowcoder.com/practice/4e55777e218b4850928d054a8cddaf50

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

这道题考察

  1. 数组的遍历与操作
  2. 条件判断与循环

以下是代码的解释:

  • can_complete_circuit 方法接受两个整数数组 grass 和 cost 作为参数,表示每个牛棚的草料数量和从一个牛棚到下一个牛棚所需的花费。
  • 初始化变量 sz 表示牛棚数量,remain 表示剩余草料和花费的差值,以及 res 表示结果,默认为 -1。
  • 判断牛棚数量是否大于0,并且草料数组和花费数组的长度是否一致。
  • 在循环中,遍历每个牛棚,累加剩余草料和花费的差值。
  • 如果剩余草料和花费的差值大于等于0,则意味着可以走完一周,初始化 remain 为0,res 为0。
  • 再次循环遍历每个牛棚,累加剩余草料和花费的差值。
  • 如果剩余草料和花费的差值小于0,说明从当前牛棚出发无法走完一周,将 remain 重置为0,res 更新为下一个牛棚的下标(即 i+1)。
  • 最终返回结果 res,表示从哪个牛棚出发能够沿顺序走完环形路线的一个周,或者返回-1表示无解。
全部评论

相关推荐

哈哈哈哈哈哈哈哈哈哈这个世界太美好了
凉风落木楚山秋:毕业出路老师不管,你盖个章他好交差就完事了,等你盖完毕业了就不关他事情了
点赞 评论 收藏
分享
05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
找工作时遇到的神仙HR
点赞 评论 收藏
分享
昨天 13:47
门头沟学院 Java
Lynn012:你评估好自己的位置了吗《顶尖应届》
投递小米集团等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务