13K+ 次浏览
假设我们有一个 3x3 的棋盘,所有数字都在 0 到 8 的范围内,并且没有重复的数字。现在,我们可以将 0 与其四个邻居之一交换,我们试图通过解决它来获得所有排列的序列,我们必须找到达到目标所需的最小步数。因此,如果输入类似于 312475680,则输出将为 4。为了解决这个问题,我们将遵循以下步骤:定义一个函数 find_next()。这将采用节点 moves := 定义移动的映射,作为每个值的对应列表 {0: [1, 3], ... 阅读更多
79 次浏览
假设我们有一个包含四个数字的列表,每个数字都在 1 到 9 的范围内,并且顺序固定。现在,如果我们在数字之间放置运算符 +、-、* 和 /(/ 表示整数除法),并用括号将它们分组,我们必须检查是否可以得到值 24。因此,如果输入类似于 nums = [5, 3, 6, 8, 7],则输出为 True,因为 (5 * 3) - 6 + (8 + 7) = 24。为了解决这个问题,我们将遵循以下步骤:定义一个函数 recur()。... 阅读更多
735 次浏览
假设我们有一个二维矩阵表示森林,其中有三种类型的单元格:0 空单元格 1 树单元格 2 着火的树单元格。每天,当有一个相邻的(顶部、底部、左侧、右侧,非对角线)树着火时,一棵树就会着火。我们必须找到使每一棵树都着火所需的天数。如果不可能,则返回 -1。因此,如果输入类似于 121101111,则输出将为 4。为了解决这个问题,我们将遵循以下步骤:ans := 0 twos := 一个新列表 for i in ... 阅读更多
140 次浏览
假设我们有一棵二叉树和另一个值 k,我们必须找到总和为 k 的唯一节点到子节点路径的数量。因此,如果输入类似于,并且 k = 5,则输出将为 2,因为路径为 [2, 3] 和 [1, 4]。为了解决这个问题,我们将遵循以下步骤:count := 一个初始值为键 0 的值为 1 的映射 ans := 0,prefix := 0 定义一个函数 dfs()。这将采用节点如果节点不为空,则 prefix := prefix + 节点的值 ans := ans + (count[prefix - target], ... 阅读更多
183 次浏览
假设我们有一棵二叉树,其中每个节点的值代表其颜色。树中最多有 2 种颜色。我们必须检查是否可以任意多次交换节点的颜色,以使没有两个连接的节点具有相同的颜色。因此,如果输入类似于,则输出为 True,因为我们可以得到。为了解决这个问题,我们将遵循以下步骤:colors := 一个空映射 prop := 一个空映射 定义一个函数 dfs()。这将采用节点和标志如果节点为空,则返回 colors[节点的值] := ... 阅读更多
292 次浏览
假设我们有一个名为 votes 的字符串列表,这里每个条目都是小写字母,它们代表按从高到低偏好顺序对候选人的投票。这里候选人的排名首先取决于在最高偏好上收到的投票数量。现在,如果有平局,我们将检查在下一个最高偏好上收到的投票数量,依此类推。如果仍然有平局,则将按字母顺序排列。因此,我们必须找到团队的最终排名,按从高到低排名顺序排列。因此,如果输入... 阅读更多
343 次浏览
假设我们有一个数字 n,房间里有 n 个开关,所有开关都关闭。现在 n 个人翻转开关如下:第 1 个人翻转所有是 1 的倍数的开关(因此所有开关)。第 2 个人翻转是 2 的倍数的开关(2、4、6……)第 i 个人翻转是 i 的倍数的开关。我们必须找到最后将打开的开关数量。因此,如果输入为 n = 5,则输出为 2,因为最初所有开关都关闭 [0, 0, 0, 0, 0],... 阅读更多
508 次浏览
假设我们有一个二进制矩阵。其中 1 代表陆地,0 代表水。众所周知,岛屿是由聚集在一起的 1 组成的群体,其周长被水包围。我们必须找到完全被包围的岛屿的数量。因此,如果输入类似于,则输出将为 2,因为有三个岛屿,但其中两个完全被包围。为了解决这个问题,我们将遵循以下步骤:定义一个函数 dfs()。这将采用 i、j 如果 i 和 j 不在矩阵范围内,则返回 False 如果 matrix[i, j] 与 0 相同,... 阅读更多
238 次浏览
假设我们有一棵二叉树,其中每个节点包含一个从 0 到 9 的单个数字。现在,从根到叶的每条路径都表示一个数字,其数字按顺序排列。我们必须找到树中所有路径表示的数字之和。因此,如果输入类似于,则输出将为 680,因为 46(4 → 6)、432(4 → 3 → 2)、435(4 → 3 → 5),它们的和为 913。为了解决这个问题,我们将遵循以下步骤:定义一个函数 solve()。这将采用根,字符串:= 空白... 阅读更多
345 次浏览
假设我们有一个单词列表和一个字符串 s,我们需要找到单词列表中作为 s 的子序列的字符串数量。因此,如果输入类似于 words = ["xz", "xw", "y"] s = "xyz",则输出将为 2,因为 "xz" 和 "y" 是 "xyz" 的子序列。为了解决这个问题,我们将遵循以下步骤:ans := 0,d := 一个空映射,对于 words 中的每个单词,执行:将单词插入到 d[word[0]] 的末尾,对于 s 中的每个字符 c,执行:l := d[c],d[c] := 一个新列表,对于 l 中的每个单词,执行:如果单词的大小是……阅读更多