比赛说明
本场竞赛由「蔚来 & 力扣」联合主办
【工作机会奖励】
- 排名第 1 ~ 300 名的参赛者可获「 NIO 蔚来」简历内推机会。
【实物奖励】
- 排名第 1 名的参赛者可获 NIO 蔚来 ES8 - 1:18 合金车模(天蓝)x 1
- 排名第 2 名的参赛者可获 NIO 蔚来 ES6 - 1:18 合金车模(星云紫)x 1
- 排名第 3 ~ 4 名的参赛者可获 NIO 蔚来Blue Sky 保温杯(蓝绿)x 1
- 排名第 5 ~ 10 名的参赛者可获 NIO 蔚来 NIOLIFE环保软木笔 5支装 x 1
- 排名第 166、266、366、466、566、666 名的参赛者可获 NIO 蔚来的纪念礼品 x 1
题目列表
| 题目 | 难度 | 得分 |
|---|---|---|
| 1.字符串中的最大奇数 | 简单 | 3 |
| 2.你完成的完整对局数 | 中等 | 4 |
| 3.统计子岛屿 | 中等 | 5 |
| 4.查询差绝对值的最小值 | 中等 | 5 |
字符串中的最大奇数
题目描述:
给你一个字符串 num ,表示一个大整数。请你在字符串 num 的所有 非空子字符串 中找出 值最大的奇数 ,并以字符串形式返回。如果不存在奇数,则返回一个空字符串 "" 。
子字符串 是字符串中的一个连续的字符序列。
示例1:
1 | 输入:num = "52" |
示例2:
1 | 输入:num = "4206" |
示例3:
1 | 输入:num = "35427" |
提示:
1 <= num.length <=$10^5$num仅由数字组成且不含前导零
思路:
倒序遍历字符串num,如果当前字符对应数字是奇数,返回从头到当前字符的子串。
提交的代码:(运行时间24ms,内存消耗13.6M)
1 | class Solution { |
你完成的完整对局数
题目描述:
一款新的在线电子游戏在近期发布,在该电子游戏中,以 刻钟 为周期规划若干时长为 15 分钟 的游戏对局。这意味着,在 HH:00、HH:15、HH:30 和 HH:45 ,将会开始一个新的对局,其中 HH 用一个从 00 到 23 的整数表示。游戏中使用 24 小时制的时钟 ,所以一天中最早的时间是 00:00 ,最晚的时间是 23:59 。
给你两个字符串 startTime 和 finishTime ,均符合 "HH:MM" 格式,分别表示你 进入 和 退出 游戏的确切时间,请计算在整个游戏会话期间,你完成的 完整对局的对局数 。
- 例如,如果
startTime = "05:20"且finishTime = "05:59",这意味着你仅仅完成从05:30到05:45这一个完整对局。而你没有完成从05:15到05:30的完整对局,因为你是在对局开始后进入的游戏;同时,你也没有完成从05:45到06:00的完整对局,因为你是在对局结束前退出的游戏。
如果 finishTime 早于 startTime ,这表示你玩了个通宵(也就是从 startTime 到午夜,再从午夜到 finishTime)。
假设你是从 startTime 进入游戏,并在 finishTime 退出游戏,请计算并返回你完成的 完整对局的对局数 。
子字符串 是字符串中的一个连续的字符序列。
示例1:
1 | 输入:startTime = "12:01", finishTime = "12:44" |
示例2:
1 | 输入:startTime = "20:00", finishTime = "06:00" |
示例3:
1 | 输入:startTime = "00:00", finishTime = "23:59" |
提示:
startTime和finishTime的格式为HH:MM00 <= HH <= 2300 <= MM <= 59startTime和finishTime不相等
思路:
先把startTime和finishTime都转成分钟数,然后判断开始时间点是否小于结束时间,如果大于,则证明玩了个通宵,结束时间要加上24个小时,然后计算玩的这段时间有多少个刻钟,最后判断开始时间点是否是刻钟起点(15的倍数),如果不是最终结果要减去1。
提交的代码:(运行时间0ms,内存消耗5.9M)
1 | class Solution { |
统计子岛屿
题目描述:
给你两个 m x n 的二进制矩阵 grid1 和 grid2 ,它们只包含 0 (表示水域)和 1 (表示陆地)。一个 岛屿 是由 四个方向 (水平或者竖直)上相邻的 1 组成的区域。任何矩阵以外的区域都视为水域。
如果 grid2 的一个岛屿,被 grid1 的一个岛屿 完全 包含,也就是说 grid2 中该岛屿的每一个格子都被 grid1 中同一个岛屿完全包含,那么我们称 grid2 中的这个岛屿为 子岛屿 。
请你返回 grid2 中 子岛屿 的 数目 。
示例1:

1 | 输入:grid1 = [[1,1,1,0,0],[0,1,1,1,1],[0,0,0,0,0],[1,0,0,0,0],[1,1,0,1,1]], grid2 = [[1,1,1,0,0],[0,0,1,1,1],[0,1,0,0,0],[1,0,1,1,0],[0,1,0,1,0]] |
示例2:

1 | 输入:grid1 = [[1,0,1,0,1],[1,1,1,1,1],[0,0,0,0,0],[1,1,1,1,1],[1,0,1,0,1]], grid2 = [[0,0,0,0,0],[1,1,1,1,1],[0,1,0,1,0],[0,1,0,1,0],[1,0,0,0,1]] |
提示:
m == grid1.length == grid2.lengthn == grid1[i].length == grid2[i].length1 <= m, n <= 500grid1[i][j]和grid2[i][j]都要么是0要么是1。
思路:
觉得这道题和之前做过的一道题类似,应该是要用递归,不过比赛时没做。。。
提交的代码:(运行时间ms,内存消耗M)
1 | class Solution { |
查询差绝对值的最小值
题目描述:
一个数组 a 的 差绝对值的最小值 定义为:0 <= i < j < a.length 且 a[i] != a[j] 的 |a[i] - a[j]| 的 最小值。如果 a 中所有元素都 相同 ,那么差绝对值的最小值为 -1 。
- 比方说,数组
[5,**2**,**3**,7,2]差绝对值的最小值是|2 - 3| = 1。注意答案不为0,因为a[i]和a[j]必须不相等。
给你一个整数数组 nums 和查询数组 queries ,其中 queries[i] = [li, ri] 。对于每个查询 i ,计算 子数组 nums[li...ri] 中 差绝对值的最小值 ,子数组 nums[li...ri] 包含 nums 数组(下标从 0 开始)中下标在 li 和 ri 之间的所有元素(包含 li 和 ri 在内)。
请你返回 ans 数组,其中 ans[i] 是第 i 个查询的答案。
子数组 是一个数组中连续的一段元素。
|x| 的值定义为:
- 如果
x >= 0,那么值为x。 - 如果
x < 0,那么值为-x。
示例1:
1 | 输入:nums = [1,3,4,8], queries = [[0,1],[1,2],[2,3],[0,3]] |
示例2:
1 | 输入:nums = [4,5,2,2,7,10], queries = [[2,3],[0,2],[0,5],[3,5]] |
提示:
2 <= nums.length <= 1051 <= nums[i] <= 1001 <= queries.length <= 2 * 1040 <= li < ri < nums.length
思路:
按照queries中的元素取出nums中的子数组,然后计算差绝对值的最小值,这里是关键,我采用了sort排序,效率太低超时了。。。
提交的代码:(运行时间ms,内存消耗M)
1 | class Solution { |
总结
很久没做LeetCode题了,从这周开始坚持参加周赛,然后写写博客,平常刷LeetCode题也不再每道题都写博客了,加油。