LeetCode--134. Gas Station
阿新 • • 發佈:2019-01-01
題目連結: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; else return false; } }
看了下大神的高效率解,還沒來得及學習一番!!!