题解 | #大胃王牛牛#
大胃王牛牛
https://www.nowcoder.com/practice/4e55777e218b4850928d054a8cddaf50
知识点:贪心
思路:牛牛从最初的位置开始,每次都觉得自己可以!当发现不行的时候,就从下一处开始。牛牛总是觉得自己可以!
牛牛的什么时候停下来?
1.牛牛一直在走,当走完一圈,还在尝试的时候,牛牛应该停下来,告诉农场主,你这牧草tm根本不够!
2.牛牛一直在走,当再次走到自己最初尝试的地方,牛牛完成了这次冒险!
编程语言:java
如果我的思路启发了你,给个小小关注吧~
我是废江,一个从java跑到内核再准备润回java的打工人,我会持续分享从linux内核到上层java微服务等干货
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 len = grass.length; int i = 0, start = 0; //牛牛开始的地方 int eat = 0; //牛牛吃的 boolean flag = false;//标记第二圈 while (true) { eat = eat + grass[i] - cost[i]; if (eat < 0) { if (flag) return -1;//牛牛不是傻子,当发现第二圈了,我tm不尝试了! //牛牛走不动了,牛牛不放弃,下一个地方尝试 eat = 0; start = i + 1; } if (start == i && flag) return start+1; i++; if (i >= len) { i = i % len; flag = true; } } } }