【leetcode 刷题笔记】第260周周赛

1. 增量元素之间的最大差值

方法一:双循环

就是两个for循环,控制i下标在j下标之前就可以。

class Solution
{
public:
    int maximumDifference(vector<int>& nums) 
    {
        int n = nums.size();
        int maxAns = INT_MIN;
        for(int j = 1; j < n; j++)
        {
            for(int i = 0; i < j; i++)
            {
                maxAns = max(maxAns, nums[j] - nums[i]);
            }
        }
        if(maxAns <=0 )
            return -1;
        return maxAns;
    }
};

方法二:单向遍历

这个方法关键就是不断比较维护一个最小数,然后再用一个变量记录当前遍历到的数和之前记录的最小数作差不断比较

class Solution
{
public:
    int maximumDifference(vector<int>& nums) 
    {
        int maxAns = INT_MIN;
        int minNum = INT_MAX;
        int n = nums.size();
        for(int num : nums)
        {
            maxAns = max(maxAns, num - minNum);
            minNum = min(minNum, num);
        }
        if(maxAns <= 0)
            maxAns = -1;
        return maxAns;
    }
};

2.网格游戏

方法:前缀和加后缀和

在这里插入图片描述
    红色是第一个机器人的路径,以我图片为例,第一个机器人在第1列向下就导致,第二个机器人的路径和就是第0行第1列之后的和或者第1行第1列之前的那块路径和。同理可得咱们遍历第一个机器人在第0行哪列向下后的所有情况,如果第一个机器人在第0行第i列向下那么第二个机器人之和就是第0行第i列之后的路径和或者第1行第i列之前的路径和。
    此时有一点注意,我这里没有遍历第一个机器人在第0行第0列就向下,所以我默认ans等于第0行第0列之和的路径和
    在注意一点第一个机器人的走法是让第二个机器人走的最少

class Solution 
{
public:
    long long gridGame(vector<vector<int>>& grid) 
    {

        int col = grid[0].size();  //遍历列就行了
        long long hou = 0;  //第一行的后缀和
        long long qian = 0;  //第二行的前缀和
        for(int i = 1; i < col; ++i)
            hou += grid[0][i];  //第一个机器人肯定从左上角出发肯定是0不用想
        long long ans = hou; //第一个机器人从第0列就向下,此时用ans直接记录第一行的后缀和
        for(int i = 1; i < col; ++i)
        {
            qian += grid[1][i-1];
            hou -= grid[0][i];
            ans = min(ans, max(qian, hou));
        }
        return ans;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白月光soul

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值