leetcode Gas Station

深度遍历:

如果有5个站, 就有5种方案:

1-2-3-4-5

2-3-4-5-1

3-4-5-1-2

。。。

判断每一种是否可能:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Solution {
public:
    bool isS(int g, vector<int>  gas, vector<int> cost, int c)
    {
        int n=gas.size();
        int s=(c+1)%n;
        for(int i=0;i<n-1;i++)
        {
            g=g+gas[s]-cost[s];
            if(g<0)
                return false;
            s=(s+1)%n;
             
        }
        return true;
    }
    int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
         
         
        for(int i=0;i<gas.size();i++)
        {
            int g=gas[i]-cost[i];
            if(g>=0)
              if (isS(g,gas, cost, i))
                  return i;
                 
            else
                continue;
        }
        return -1;
    }
};

  使用贪心法的最优子结构:

如果0到i时的累积油量为负值,则0-i开始的值都不行, 从 i开始判断。 并累积总的 diff, 看是否有解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution(object):
    def canCompleteCircuit(self, gas, cost):
        """
        :type gas: List[int]
        :type cost: List[int]
        :rtype: int
        """
         
        x=0
        n=len(gas)
        cur_g=0
        total=0
        for i in range(n):
            diff=gas[i]-cost[i]
            cur_g=cur_g+diff
            total=total+diff
                 
            if cur_g<0:
                cur_g=0
                x=i+1
                 
        return x if total>=0 else -1
            

  

 

posted @   hahahaf  阅读(165)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!
点击右上角即可分享
微信分享提示