136 次浏览
假设我们有一个 Unix 路径,在一个字符串列表中,我们必须找到其解析版本。众所周知,在 Unix 中,“..” 表示上级目录,“.” 表示停留在当前目录。这里的解析表示对这两个符号的评估,以便我们得到当前所在的最终目录。因此,如果输入类似于 path = ["usr", "..", "usr", ".", "local", "etc", "foo"],则输出将为 ['usr', 'local', 'etc', 'foo'],因为该部分表示 "/usr/../usr/./local/etc",解析为 "/usr/local/etc/foo"。为了解决这个问题,我们将遵循以下步骤:s := 新列表;对于每个元素… 阅读更多
214 次浏览
假设我们有一个名为 nums 的排序数字列表,我们必须找到列表中唯一元素的数量。因此,如果输入类似于 nums = [3, 3, 3, 4, 5, 7, 7],则输出将为 4,因为唯一数字是 [3, 4, 5, 7]。为了解决这个问题,我们将遵循以下步骤:s:= 新集合;cnt:= 0;对于 nums 中的每个 i,如果 i 不在 s 中,则将 i 插入到 s 中;cnt := cnt + 1;返回 cnt。让我们看看下面的实现,以便更好地理解:示例 现场演示类解决方案: def solve(self, nums): ... 阅读更多
207 次浏览
假设我们有一个字符串 s,其中只有 "a" 和 "b"。"a" 可以保持 "a" 或变成 "b",但 "b" 不能更改。我们必须找到可以创建的唯一字符串的数量。因此,如果输入类似于 s = "baab",则输出将为 4,因为我们可以创建这些字符串:["baab", "babb", "bbab", "bbbb"]。为了解决这个问题,我们将遵循以下步骤:counts := s 中 'a' 的频率;返回 2^counts。让我们看看下面的实现,以便更好地理解:示例 现场演示类解决方案: def solve(self, s): counts = s.count('a') ... 阅读更多
781 次浏览
假设我们有一个数字 n,我们必须检查其质因数是否仅包含 2、3 或 5。因此,如果输入类似于 n = 18,则输出将为 True,因为 18 的质因数是 2 和 3。为了解决这个问题,我们将遵循以下步骤:如果 n < 0,则返回 False;factor := 一个包含元素 [2, 3, 5] 的列表;对于 factor 中的每个 i,当 n mod i 等于 0 时,n := n / i;当 n 等于 1 时返回 true,否则返回 false。让我们看看下面的实现,以便更好地理解… 阅读更多
553 次浏览
假设我们有一个数字 n,我们必须找到一个具有 n 个台阶的楼梯字符串。这里字符串中的每一行都用换行符隔开。因此,如果输入类似于 n = 5,则输出将为: * ** *** **** *****。为了解决这个问题,我们将遵循以下步骤:s := 空字符串;对于范围 0 到 n-1 中的 i,s := s 连接 (n-i-1) 个空格连接… 阅读更多
625 次浏览
假设我们有一个矩阵 M,我们必须检查它是否是托普利茨矩阵。众所周知,当从左到右下降的每条对角线具有相同的值时,矩阵被称为托普利茨矩阵。因此,如果输入类似于 726372537,则输出将为 True。为了解决这个问题,我们将遵循以下步骤:对于除最后一行以外的每一行 i,对于除最后一列以外的每一列,如果 matrix[i, j] 与 matrix[i+1, j+1] 不相同,则返回 False;返回 True。让我们看看下面的实现,以便更好地理解:示例 现场演示类解决方案: def solve(self, matrix): ... 阅读更多
547 次浏览
假设我们有三个数字 x、y 和 z,我们必须找到它们的乘积,但是如果任意两个数字相等,则它们不计数。因此,如果输入类似于 x = 5、y = 4、z = 2,则输出将为 40,因为所有三个数字都是不同的,因此它们的乘积是 5 * 4 * 2 = 40。为了解决这个问题,我们将遵循以下步骤:temp_set := 新集合;remove := 新集合;对于 [x, y, z] 中的每个 i,如果 i 在 temp_set 中,则将 i 插入到名为 remove 的集合中;将 i 插入到… 阅读更多
138 次浏览
假设我们有一个字符串 s,它表示输入编辑器的字符,符号“
294 次浏览
假设我们有一个任务列表和另一个人员列表。tasks[i] 确定执行第 i 个任务所需的强度。people[i] 确定第 i 个人拥有的强度。最后,如果一个人最多只能执行一个任务,我们必须找到可以完成的任务数量。因此,如果输入类似于 tasks = [4, 3, 9, 15],people = [10, 5, 3, 2],则输出将为 3,因为第一个人可以执行任务 9,第二个人可以执行任务 4,第三个人可以执行… 阅读更多
337 次浏览
假设我们有一个数字 start 和另一个数字 end (start < end),我们必须找到使用以下操作将 start 转换为 end 所需的最小操作数:递增 1;乘以 2。因此,如果输入类似于 start = 5,end = 11,则输出将为 2,因为我们可以乘以 2 得到 10,然后加 1 得到 11。为了解决这个问题,我们将遵循以下步骤:ct:= 0;当 end/2 >= start 时,如果 end mod 2 等于 1,则 end := end - 1;end := end/2;ct := ct + 2;否则,end:= end/2;ct… 阅读更多