Leetcode_1_Array_134_Gas Station

大写的哭唧唧,这题我自己做了点分析,搞出来了,然而还是Time Limit Exceeded~~~

My version:

class Solution(object):
    def canCompleteCircuit(self, gas, cost):
        """
        :type gas: List[int]
        :type cost: List[int]
        :rtype: int
        """
        
        for k in range(len(gas)):
            current_Gas=0
            for i in range(len(gas)):
                current_Gas+=gas[(k+i)%len(gas)]
                if current_Gas                     if k==len(gas)-1:
                        return -1
                    break
                else:
                    current_Gas-=cost[(k+i)%len(gas)]
                    if i==len(gas)-1:
                        return k
                    

正确版本:写的非常simple,大爱。

Key: 1.巧用整体思想,原则上只要sum(gas)不比sum(cost)小,就一定会有解答;反之则一定误解;

        2.深层剖析一下,实质上就相当于gas[i]+rest要一直大于等于cost[i];只不过这里的rest是实时更新的。

Code:

class Solution(object):
    def canCompleteCircuit(self, gas, cost):
        """
        :type gas: List[int]
        :type cost: List[int]
        :rtype: int
        """
        
        if sum(gas)             return -1
        n,key,rest=len(gas),0,0
        for i in range(n):
            if gas[i]+rest                 key=i+1
                rest=0
            else:
                rest+=gas[i]-cost[i]
        return key

 

你可能感兴趣的:(Leetcode)