LeetCode 第225场周赛题解

Stella981
• 阅读 669

【GiantPandaCV导语】这是LeetCode的第225场周赛的题解,本期考察的知识点有暴力,前缀和,推导等等。

比赛链接

题目一:替换隐藏数字得到的最晚时间

LeetCode 第225场周赛题解

第一题题面

解题思路:直接从高位开始判断即可,注意"?5:00"这种情况下,首位只能填1。时间复杂度解题代码如下:

class Solution { public:     string maximumTime(string time) {         if(time[0]=='?')         {             if(time[1]!='?'&&time[1]>='4')                 time[0]='1';             else                 time[0]='2';         }         if(time[1]=='?')         {             if(time[0]=='2')                 time[1]='3';             else                 time[1]='9';         }         if(time[3]=='?')             time[3]='5';         if(time[4]=='?')             time[4]='9';         return time;     }      };

题目二:满足三条件之一需改变的最少字符数

LeetCode 第225场周赛题解

第二题题面

题面

解题思路:先来判断前面两个条件,这两个条件其实是同一种条件;这里假设结果是a>b,那么a中的最小字母要比b中的所有字母大,那么我们可以枚举这个最小字母,如果a中的当前的字母比这个字母更小,则cnt++,如果b中的字母大于等于这个字母,同样cnt++,这里注意枚举要从字母b开始,因为字母a不可能成为限定的条件,对于最后一个条件,直接枚举相同字母即可。时间复杂度解题代码如下:

class Solution { public:     int solve(string a,string b) {         int ans=1000000;         for(int i=1;i<26;i++)         {             int cnt=0;             for(int j=0;j<a.size();j++)                 if(a[j]-'a'<i)                     cnt++;             for(int j=0;j<b.size();j++)                 if(b[j]-'a'>=i)                     cnt++;             ans=min(ans,cnt);         }         return ans;     }     int minCharacters(string a, string b) {         int ans=min(solve(a,b),solve(b,a));         for(int i=0;i<26;i++)         {             int cnt=0;             for(int j=0;j<a.size();j++)                 if(a[j]-'a'!=i)                     cnt++;             for(int j=0;j<b.size();j++)                 if(b[j]-'a'!=i)                     cnt++;             ans=min(ans,cnt);         }         return ans;     } };

题目三:找出第 K 大的异或坐标值

LeetCode 第225场周赛题解

第三题题面

解题思路:直接使用类似于二维前缀和的思想,维护一个前缀异或的数组,然后可以用堆或者排序求第k大时间复杂度解题代码如下:

class Solution { public:     int dp[1005][1005];     int kthLargestValue(vector<vector<int>>& matrix, int k) {         int n=matrix.size(),m=matrix[0].size();         vector<int> ans;         for(int i=1;i<=n;i++)             for(int j=1;j<=m;j++)             {                 dp[i][j] = (dp[i-1][j]^dp[i][j-1]^dp[i-1][j-1]^matrix[i-1][j-1]);                 ans.push_back(dp[i][j]);             }         sort(ans.rbegin(),ans.rend());         return ans[k-1];     } };

题目四:放置盒子

LeetCode 第225场周赛题解

第四题题面

解题思路:我们假设示例3中的摆放为3层标准摆放,也就是3层高的最小占地摆放,那么可以推出1层标准摆放的盒子数为1;2层标准摆放的盒子数为1+3=4;3层标准摆放的盒子数为1+3+6=10;以此类推。现在假设我们有n个盒子,为了尽可能减小占地面积,我们希望能够尽可能贴近标准摆放,可以用前面的递推求出来使用不超过n个盒子的最大标准摆放,现在还剩下一些盒子,从第一层开始贴近当前的标准摆放进行堆叠,这里简单推导一下即可得到:假设第一层放 个,那么上一层可以放 个,再往上可以放 个。那么求个最小的前k项和,判断是否大于等于剩下盒子个数即可。

时间复杂度解题代码如下:

class Solution { public:     int minimumBoxes(int n) {         int s=1,tot=0,res=0;         while(tot<n)         {             for(int i=1;i<=s;i++)             {                 tot += i;                 res ++;                 if(tot>=n)                     break;             }             s++;         }         return res;     } };


欢迎关注GiantPandaCV, 在这里你将看到独家的深度学习分享,坚持原创,每天分享我们学习到的新鲜知识。( • ̀ω•́ )✧

有对文章相关的问题,或者想要加入交流群,欢迎添加BBuf微信:

LeetCode 第225场周赛题解

二维码

为了方便读者获取资料以及我们公众号的作者发布一些Github工程的更新,我们成立了一个QQ群,二维码如下,感兴趣可以加入。

LeetCode 第225场周赛题解

公众号QQ交流群

本文分享自微信公众号 - GiantPandaCV(BBuf233)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
2年前
2021美赛A题(真菌对木制分解效率的影响)——赛题解读&解题思路
2021美赛A题(真菌对木制分解效率的影响)——赛题解读&解题思路赛题目的一.多种真菌对枯枝落叶/木制纤维分解的影响模型二.真菌的相互作用关系模型三.大气变化对天气的影响模型四.物种在不同环境下的优劣势五.真菌多样性对系统分解凋落物效率的影响模型赛题目的赛题目的:探索真菌
Wesley13 Wesley13
2年前
ACM团队周赛题解(2)
拉了CF583和CF486的两套div2题目还是先贴宏定义部分defineMAXN10000005defineMOD1000000007definePI(acos(1.0))defineEPS1e6defineMMT(s,a)memset(s,a,sizeofs)define
Stella981 Stella981
2年前
JS 苹果手机日期显示NaN问题
问题描述newDate("2019122910:30:00")在IOS下显示为NaN原因分析带的日期IOS下存在兼容问题解决方法字符串替换letdateStr"2019122910:30:00";datedateStr.repl
Stella981 Stella981
2年前
LeetCode.1128
这是小川的第394次更新,第428篇原创<br/01看题和准备今天介绍的是LeetCode算法题中Easy级别的第259题(顺位题号是1128)。给定多米诺骨牌列表,当且仅当(ac且bd)或(ad且bc),dominoesia,
Stella981 Stella981
2年前
LeetCode 227场周赛题解
【GiantPandaCV导语】这是LeetCode的第227场周赛的题解,本期考察的知识点有「暴力,字符串,二进制枚举」等等。比赛链接https://leetcodecn.com/contest/weeklycontest227/题目一:检查数组是否经排序和轮转得到
Stella981 Stella981
2年前
Hi,你有一份 TiDB 易用性挑战赛「捞分指南」请查收
TiDB挑战赛第二季之易用性挑战赛(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fmp.weixin.qq.com%2Fs%2FVNtLhbOIJaAX2dEmjt8d5w)已经开始一周了,由于有参加过上一季性能挑战赛(https://www.oschina.net/act
Stella981 Stella981
2年前
LeetCode 226场周赛题解
❝【GiantPandaCV导语】这是LeetCode第226场周赛题解,本周考察的知识点有枚举,贪心,前缀和,Manacher回文算法,动态规划,图论等。❞比赛链接https://leetcodecn.com/contest/weeklycontest226/最终Rank:23
Wesley13 Wesley13
2年前
20175316盛茂淞 2018
20175316201820192《Java程序设计》第2周课上测试总结上周考试题目总结题目1题目要求:在Ubuntu中用自己的有位学号建一个文件,教材p29Example2\_51.修改代码a\\中添
Stella981 Stella981
2年前
LeetCode.1170
这是小川的第412次更新,第444篇原创<br/看题和准备今天介绍的是LeetCode算法题中Easy级别的第263题(顺位题号是1170)。在一个非空字符串s上定义一个函数f(s),该函数计算s中最小字符的出现频率。例如,如果s"dcce",则f(s)2,因为最
Stella981 Stella981
2年前
LeetCode.1029
这是小川的第383次更新,第412篇原创<br/01看题和准备今天介绍的是LeetCode算法题中Easy级别的第245题(顺位题号是1029)。公司计划采访的人数为2N。将第i个人飞往城市A的费用是i0,将第i个人飞到城市B的费用是费用i1。返回将