力扣287周赛总结

这次周赛因为放清明假,摆了两天,导致状态一直不对,开赛过后就只是看了看题目,想了一下思路,浅写了一下代码,超出时间限制以后就再也没有了重新修改的心思,也就相当于放弃了比赛。
T1:转化时间需要的最少操作次数
这个题看第一眼思路就很明确,将字符串转化成整数。然后再由高到底进行操作,这样得到的便是最少擦作次数。
将字符串转化为整数的方法有两种,一是自己实现,即current[0]-'0’这样字符current[0]就转变为了整数。二是使用库函数atoi函数。int i=atoi(current[0]);
在将字符串转化为数组后我犯了一个错误,直接将计数sum初始化的值定位两个数组小时之差,然后考虑分钟部分,从15开始进行操作。这样就忽略了虽然有小时差,但是时间差并没有60分钟的情况。所以出现了报错,这也是在赛后状态调整过来了才发现的问题。

class Solution {
public:
    int convertTime(string current, string correct) {
        int a=0,b=0;
        a=(current[0]-'0')*10+current[1]-'0';
        b=(current[3]-'0')*10+current[4]-'0';
        int c=0,d=0;
        c=(correct[0]-'0')*10+correct[1]-'0';
        d=(correct[3]-'0')*10+correct[4]-'0';
        int sum=0;
        int h=c*60+d-(a*60+b);
        sum+=h/60;
        h%=60;
        sum+=h/15;
        h=h%15;
        sum+=h/5;
        h=h%5;
        sum+=h;
        return sum;
    }
};

T2:找出输掉零场或一场比赛的玩家
这个题我一开始把问题想的复杂了。我的思路是将这个二维数组先拆为两个一维数组,然后没有输掉比赛的就是在赢得数组里有,但是在输的数组里面没有得。只输掉一场比赛得就是在输的数组里面用哈希表找出计数为1的。其实我觉得我的思路没有问题,不过我没有坚持写代码。
今天再看这个题目,发现了有另一种思路,用一个哈希表进行统计,赢了比赛的不用管,计数各输了的比赛场次。最后统计输了次数为0和1的即可。

class Solution {
public:
    vector<vector<int>> findWinners(vector<vector<int>>& matches) {
        map<int,int>mp;
        for(auto &match:matches){
            mp[match[0]]=mp[match[0]];
            mp[match[1]]++;
        }
        vector<int>res1,res2;
        for(auto&[id,times]:mp){
            if(times==0){
            res1.push_back(id);
            }
            else if(times==1){
                res2.push_back(id);
            }
        }
        return {res1,res2};
    }
};

T3、T4暂时性放弃一会会。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值