【贪心】转化时间需要的最少操作数
题目
给你两个字符串 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 <= 105
matches[i].length == 2
1 <= winneri, loseri <= 105
winneri != loseri
- 所有
matches[i]
互不相同
解题思路
模拟即可
代码
|
|
【二分】每个小孩最多能分到多少糖果
题目
给你一个 下标从 0 开始 的整数数组 candies
。数组中的每个元素表示大小为 candies[i]
的一堆糖果。你可以将每堆糖果分成任意数量的 子堆 ,但 无法 再将两堆合并到一起。
另给你一个整数 k
。你需要将这些糖果分配给 k
个小孩,使每个小孩分到 相同 数量的糖果。每个小孩可以拿走 至多一堆 糖果,有些糖果可能会不被分配。
返回每个小孩可以拿走的 最大糖果数目 。
示例 1:
|
|
示例 2:
|
|
提示:
1 <= candies.length <= 105
1 <= candies[i] <= 107
1 <= 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 <= 26
values[i].length == 2
1 <= dictionary.length <= 100
1 <= dictionary[i].length <= 100
- 所有
keys[i]
和dictionary[i]
互不相同 1 <= word1.length <= 2000
1 <= word2.length <= 200
- 所有
word1[i]
都出现在keys
中 word2.length
是偶数keys
、values[i]
、dictionary[i]
、word1
和word2
只含小写英文字母- 至多调用
encrypt
和decrypt
总计200
次
解题思路
这种类型题目,对于力扣的输入都有点搞不懂,所以当时就没写了
加密,按题意模拟即可
解密,倒过来思考,利用前面实现的加密即可
代码
|
|