
【贪心】转化时间需要的最少操作数
题目
给你两个字符串 current 和 correct ,表示两个 24 小时制时间 。
24 小时制时间 按 "HH:MM" 进行格式化,其中 HH 在 00 和 23 之间,而 MM 在 00 和 59 之间。最早的 24 小时制时间为 00:00 ,最晚的是 23:59 。
在一步操作中,你可以将 current 这个时间增加 1、5、15 或 60 分钟。你可以执行这一操作 任意 次数。
返回将 current 转化为 correct 需要的 最少操作数 。
示例 1:
| |
示例 2:
| |
提示:
current和correct都符合"HH:MM"格式current <= correct
解题思路
先加60的,加不了再加15,加不了再加5,加不了再加1
没想到可以先直接都转为分钟
代码
写的很繁琐
| |
偷学代码
| |
【模拟】找出输掉零场或一场比赛的玩家
题目
给你一个整数数组 matches 其中 matches[i] = [winneri, loseri] 表示在一场比赛中 winneri 击败了 loseri 。
返回一个长度为 2 的列表 answer :
answer[0]是所有 没有 输掉任何比赛的玩家列表。answer[1]是所有恰好输掉 一场 比赛的玩家列表。
两个列表中的值都应该按 递增 顺序返回。
注意:
- 只考虑那些参与 至少一场 比赛的玩家。
- 生成的测试用例保证 不存在 两场比赛结果 相同 。
示例 1:
| |
示例 2:
| |
提示:
1 <= matches.length <= 105matches[i].length == 21 <= winneri, loseri <= 105winneri != loseri- 所有
matches[i]互不相同
解题思路
模拟即可
代码
| |
【二分】每个小孩最多能分到多少糖果
题目
给你一个 下标从 0 开始 的整数数组 candies 。数组中的每个元素表示大小为 candies[i] 的一堆糖果。你可以将每堆糖果分成任意数量的 子堆 ,但 无法 再将两堆合并到一起。
另给你一个整数 k 。你需要将这些糖果分配给 k 个小孩,使每个小孩分到 相同 数量的糖果。每个小孩可以拿走 至多一堆 糖果,有些糖果可能会不被分配。
返回每个小孩可以拿走的 最大糖果数目 。
示例 1:
| |
示例 2:
| |
提示:
1 <= candies.length <= 1051 <= candies[i] <= 1071 <= k <= 1012
解题思路
如果每个小孩都能分到至少 x 个糖果,那么也能分到至少 (x - 1)个糖果。因此满足二分性。
经典二分了
一开始二分判定函数里有个变量写错了,WA了一发
代码
| |
【模拟+逆向思考】加密解密字符串
题目
给你一个字符数组 keys ,由若干 互不相同 的字符组成。还有一个字符串数组 values ,内含若干长度为 2 的字符串。另给你一个字符串数组 dictionary ,包含解密后所有允许的原字符串。请你设计并实现一个支持加密及解密下标从 0 开始字符串的数据结构。
字符串 加密 按下述步骤进行:
- 对字符串中的每个字符
c,先从keys中找出满足keys[i] == c的下标i。 - 在字符串中,用
values[i]替换字符c。
字符串 解密 按下述步骤进行:
- 将字符串每相邻 2 个字符划分为一个子字符串,对于每个子字符串
s,找出满足values[i] == s的一个下标i。如果存在多个有效的i,从中选择 任意 一个。这意味着一个字符串解密可能得到多个解密字符串。 - 在字符串中,用
keys[i]替换s。
实现 Encrypter 类:
Encrypter(char[] keys, String[] values, String[] dictionary)用keys、values和dictionary初始化Encrypter类。String encrypt(String word1)按上述加密过程完成对word1的加密,并返回加密后的字符串。int decrypt(String word2)统计并返回可以由word2解密得到且出现在dictionary中的字符串数目。
示例:
| |
提示:
1 <= keys.length == values.length <= 26values[i].length == 21 <= dictionary.length <= 1001 <= dictionary[i].length <= 100- 所有
keys[i]和dictionary[i]互不相同 1 <= word1.length <= 20001 <= word2.length <= 200- 所有
word1[i]都出现在keys中 word2.length是偶数keys、values[i]、dictionary[i]、word1和word2只含小写英文字母- 至多调用
encrypt和decrypt总计200次
解题思路
这种类型题目,对于力扣的输入都有点搞不懂,所以当时就没写了
加密,按题意模拟即可
解密,倒过来思考,利用前面实现的加密即可
代码
| |
