C++算法基础题解(第393场周赛)
替换字符可以得到的最晚时间
题目
- 给你一个字符串 s,表示一个 12 小时制的时间格式,其中一些数字(可能没有)被 “?” 替换。
- 12 小时制时间格式为 “HH:MM” ,其中 HH 的取值范围为 00 至 11,MM 的取值范围为 00 至 59。最早的时间为 00:00,最晚的时间为 11:59。
- 你需要将 s 中的 所有 “?” 字符替换为数字,使得结果字符串代表的时间是一个 有效 的 12 小时制时间,并且是可能的 最晚 时间。
- 返回结果字符串。
测试案例
示例 1:
输入: s = “1?:?4”
输出: “11:54”
解释: 通过替换 “?” 字符,可以得到的最晚12小时制时间是 “11:54”。
示例 2:
输入: s = “0?:5?”
输出: “09:59”
解释: 通过替换 “?” 字符,可以得到的最晚12小时制时间是 “09:59”。
提示
s.length == 5,且s[2] 是字符 “:”,除 s[2] 外,其他字符都是数字或 “?”
输入保证在替换 “?” 字符后至少存在一个介于 “00:00” 和 “11:59” 之间的时间。
解析:
利用小时位范围(0-11)逐一遍历,优先置于最外层循环递减,并分层筛选特殊条件
代码示例
1 | class Solution { |
质数的最大距离
题目
- 给你一个整数数组 nums。
- 返回两个(不一定不同的)质数在 nums 中下标的最大距离。
测试案例
示例 1:
输入: nums = [4,2,9,5,3]
输出: 3
解释: nums[1]、nums[3] 和 nums[4] 是质数。因此答案是 |4 - 1| = 3。
示例 2:
输入: nums = [4,8,2,8]
输出: 0
解释: nums[2] 是质数。因为只有一个质数,所以答案是 |2 - 2| = 0。
提示
1 <= nums.length <= 3 * 105 , 1 <= nums[i] <= 100
输入保证 nums 中至少有一个质数。
解析:
代码示例
1 | class Solution { |
致谢
思路来源:茶灵山艾府
评论



