type
status
date
slug
summary
tags
category
icon
password
创建时间
Nov 3, 2024 09:19 AM
3340. 检查平衡字符串
给你一个仅由数字 0 - 9 组成的字符串
num
。如果偶数下标处的数字之和等于奇数下标处的数字之和,则认为该数字字符串是一个 平衡字符串。如果
num
是一个 平衡字符串,则返回 true
;否则,返回 false
。解答:按照题意计算奇偶位数字之和
3341. 到达最后一个房间的最少时间 I
有一个地窖,地窖中有
n x m
个房间,它们呈网格状排布。给你一个大小为
n x m
的二维数组 moveTime
,其中 moveTime[i][j]
表示在这个时刻 以后 你才可以 开始 往这个房间 移动 。你在时刻 t = 0
时从房间 (0, 0)
出发,每次可以移动到 相邻 的一个房间。在 相邻 房间之间移动需要的时间为 1 秒。请你返回到达房间
(n - 1, m - 1)
所需要的 最少 时间。如果两个房间有一条公共边(可以是水平的也可以是竖直的),那么我们称这两个房间是 相邻 的。
解答:典型的最短路径问题,只不过题目加了限制。每个房间之间的移动时间为1秒,但我们需要考虑在
moveTime
数组中指定的等待时间。使用堆优化的 Dijkstra 算法,使用堆优化的版本,时间复杂度降低了
也尝试使用了 DFS ,但是会导致超时,而且代码不够简洁美观。
3342. 到达最后一个房间的最少时间 II
有一个地窖,地窖中有
n x m
个房间,它们呈网格状排布。给你一个大小为
n x m
的二维数组 moveTime
,其中 moveTime[i][j]
表示在这个时刻 以后 你才可以 开始 往这个房间 移动 。你在时刻 t = 0
时从房间 (0, 0)
出发,每次可以移动到 相邻 的一个房间。在 相邻 房间之间移动需要的时间为:第一次花费 1 秒,第二次花费 2 秒,第三次花费 1 秒,第四次花费 2 秒……如此 往复 。请你返回到达房间
(n - 1, m - 1)
所需要的 最少 时间。如果两个房间有一条公共边(可以是水平的也可以是竖直的),那么我们称这两个房间是 相邻 的。
解答:这题其实和第二题差不多。唯一区别就是移动时间会因为移动次数变化。
第一个解法,我是在朴素的 BFS 基础上,改动而来。改动和树的层序遍历(输出每一层的元素)相似。每遍历一层,就表示增加一次访问。
使用 Djistra,直接暴力加一个维度存储当期的遍历的次数
这题还有个更加巧妙的做法,参考的是 灵茶山艾府
我们参考国际象棋的排列,是不是有黑白两个格子。我给定格子的坐标,你是不是可以直接求出是黑格子还是白格子。根据其下标和
i+j
,就可以知道是黑棋还是白棋。

3343. 统计平衡排列的数目
给你一个字符串
num
。如果一个数字字符串的奇数位下标的数字之和与偶数位下标的数字之和相等,那么我们称这个数字字符串是 平衡的 。请你返回
num
不同排列 中,平衡 字符串的数目。由于答案可能很大,请你将答案对
109 + 7
取余 后返回。一个字符串的 排列 指的是将字符串中的字符打乱顺序后连接得到的字符串。
暂定