classSolution { /** 思路: 找到最后一个 sum 还是减小状态的下标即可,然后结果就是这个下标的下一个下标,即( index + 1 ) % len 因为index 是最低点了,后面就是回升的了。 */ publicintcanCompleteCircuit(int[] gas, int[] cost) { intlen= gas.length; intmin= Integer.MAX_VALUE; intindex= -1; intsum=0; for ( inti=0; i < len; i ++ ) { sum += gas[ i ] - cost[ i ]; // System.out.println( sum + " " + i ); if ( sum < min ) { min = sum; index = i + 1; } } return sum < 0 ? -1 : index % len; } }