- 博客(7)
- 收藏
- 关注
原创 3216. 交换后字典序最小的字符串
贪心法:从字符串的开头开始遍历,如果发现相邻的两个字符具有相同的奇偶性且前一个字符大于后一个字符,则交换这两个字符后返回结果。如果遍历完整个字符串都没有找到符合条件的交换,则返回原字符串。的数字后,返回可以得到的字典序最小的字符串。如果两个数字都是奇数或都是偶数,则它们具有相同的奇偶性。例如,5 和 9、2 和 4 奇偶性相同,而 6 和 9 奇偶性不同。时间复杂度:由于只需要遍历字符串一次,因此时间复杂度为 O(n)。空间复杂度:只需要常数级别的额外空间,因此空间复杂度为 O(1)。
2024-10-30 09:33:34
197
原创 3211. 生成不含相邻零的二进制字符串
观察到:以 “1” 结尾的字符串没有任何限制,它可以接 “0” 或 “1”。例如,如果当前字符串是 “11”,我们可以生成 “110” 或 “111”;以 “0” 结尾的字符串不能再接 “0”,因为不能出现 “00” 的情况。因此,唯一的选择是后面接 “1”。例如,如果当前字符串是 “10”,则只能生成 “101”。具体来说,可以遍历所有长度为 n 的二进制字符串,检查每个字符串是否满足条件。时间复杂度为 O(n * 2^n),因为总共有 2^n 个数字,每个数字需要 O(n) 的时间来判断和存储答案。
2024-10-29 22:02:54
266
原创 3180. 执行操作可获得的最大总奖励 I
4. 结果计算:从最大可能的总奖励开始向下遍历dp数组,找到第一个为True的索引,该索引加上数组中的最大值即为最大总奖励。if dp[k - x] == 1: # 如果可以实现 k - x 的总奖励。3. 状态转移:对于每个rewardValues[i],更新dp数组,表示通过选择当前元素能够达到的总奖励。2. 动态规划:定义一个动态规划数组dp,其中dp[i]表示是否能通过选择数组中的某些元素得到总奖励i。dp[k] = 1 # 则可以实现 k 的总奖励。# 遍历每个奖励值,更新 dp 数组。
2024-10-25 19:25:37
272
原创 找到连续赢k场比赛的第一位玩家
遍历比较:然后,我们遍历技能数组(skills),从第二个玩家开始,与当前假设的胜者(idx指向的玩家)进行比较。如果当前玩家的技能等级低于胜者,则增加胜者的胜利次数(cnt)。如果当前玩家的技能等级高于胜者,则更新胜者索引(idx)为当前玩家的索引,并重置胜利次数(cnt)为1。比赛的方式是队列中最前面的两名玩家进行对决,技能等级更高的玩家获胜,并且获胜者保持在队列的开头,而失败者排到队列的末尾。初始化:首先,我们假设技能等级最高的玩家是胜者,并初始化胜者索引(idx)为0,胜利次数(cnt)为0。
2024-10-24 15:46:00
235
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人