本文主要是介绍LeetCode--134. Gas Station,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:https://leetcode.com/problems/gas-station/
这个题目题意很绕,但是十分简单,最朴素的思路就是暴力检查一遍,不过有个小技巧——整除余数的性质:就是检查到数组末端的数组后,索引i越界,计算数组长度的余数就能回到起始端,这里还要注意索引0前的一个元素是索引等于length-1的元素。图示如下:
代码如下:
class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {for(int start=0;start<gas.length;start++){if(isAccessible(start,gas,cost))return start;}return -1;}public static boolean isAccessible(int start,int[] gas,int[] cost){int tank=0;int i=start+1;int pre=0;int new_index=0;for(;(new_index=i%gas.length)!=start;i++){pre=new_index-1;if(new_index==0)pre=gas.length-1;tank+=gas[pre];tank-=cost[pre];if(tank<0)return false;}int p=(i-1)%gas.length;tank+=gas[p];tank-=cost[p];if(tank>=0)return true;elsereturn false;}
}
看了下大神的高效率解,还没来得及学习一番!!!
这篇关于LeetCode--134. Gas Station的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!