307 次浏览
假设我们有一个数字列表 A,我们需要找到所有重复的数字并删除其最后一次出现。所以,如果输入像 [10, 30, 40, 10, 30, 50],那么输出将是 [10, 30, 40, 50]为了解决这个问题,我们将遵循以下步骤:seen:=一个新的映射d:=一个新的映射对于范围 0 到 nums 大小的 i,执行以下操作:如果 nums[i] 不在 d 中,则d[nums[i]]:= 1否则,d[nums[i]] := d[nums[i]] + 1i:= 0当 i < nums 大小,执行以下操作:n:= d[nums[i]]如果 nums[i] 不在 seen 中,则seen[nums[i]]:= 1否则,seen[nums[i]] := seen[nums[i]] + 1如果 n 等于 seen[nums[i]] ... 阅读更多
181 次浏览
假设我们有一个名为 A 的数字列表和另一个数字 k,我们需要创建一个可能的元素的新集合 {A[k], A[A[k]], A[A[A[k]]], ...},在它超出索引之前停止。我们需要找到此集合的大小,否则当存在循环时返回 -1。所以,如果输入像 A = [1, 2, 3, 4, 5, 6, 7],k = 1,那么输出将是 6,因为 A[1] = 2,A[2] = 3,A[3] = 4,A[4] = 5,A[5] = 6,A[6] = 7,所以集合是 {2, 3, 4, 5, ... 阅读更多
329 次浏览
假设我们有一个字符串 s,我们需要找到其中第一个重复字符的索引。如果我们找不到任何重复字符,则返回 -1。所以,如果输入像“abcade”,那么输出将是 3,因为'a'再次出现在索引 3 处。为了解决这个问题,我们将遵循以下步骤:定义一个映射 chars对于范围 0 到 s 大小的 i,执行以下操作:如果 s[i] 在 chars 中,则返回 i否则,chars[s[i]] := chars[s[i]] + 1返回 -1让我们看看以下实现以更好地理解:示例实时演示from collections import defaultdict class Solution: def solve(self, s): ... 阅读更多
3K+ 次浏览
假设我们有一个矩形,它表示为一个包含四个元素的列表 [x1, y1, x2, y2],其中 (x1, y1) 是其左下角的坐标,(x2, y2) 是其右上角的坐标。当它们的交集面积为正时,两个矩形重叠。所以,仅在角或边处接触的两个矩形不会重叠。所以,如果输入像 R1 = [0,0,2,2],R2 = [1,1,3,3],那么输出将是 True。为了解决这个问题,我们将遵循以下步骤:如果 R1[0]>=R2[2] 或 R1[2]=R2[2]) 或 (R1[2]
1K+ 次浏览
假设我们有一个名为 nums 的数字列表,我们需要检查是否存在三个数字 a、b 和 c,使得 a^2 + b^2 = c^2。所以,如果输入像 [10, 2, 8, 5, 6],那么输出将是 True,因为 8^2 + 6^2 = 64+36 = 100 = 10^2。为了解决这个问题,我们将遵循以下步骤:tmp:= nums 中所有数字的平方降序排列的列表对于 tmp 中的每个索引 i 和对应的数字 n,执行以下操作:base:= nleft:= i+1, right:= tmp 的大小 -1当 left base,则left:= ... 阅读更多
630 次浏览
假设我们有一个大于 1 的数字 n,我们需要找到它的所有素数因子并按排序顺序返回它们。我们可以将一个数字写成素数的乘积,它们是它的素数因子。并且相同的素数因子可能出现不止一次。所以,如果输入像 42,那么输出将是 [2, 3, 7]。为了解决这个问题,我们将遵循以下步骤:res:=一个新的列表当 n 模 2 等于 0 时,执行以下操作:在 res 的末尾插入 2n := n/2 的商对于范围 3 到 (平方 ... 阅读更多
224 次浏览
假设我们有两个名为 nums 和 costs 的数字列表。现在考虑,有一个操作可以增加或减少 nums[i],成本为 costs[i]。我们可以执行任意数量的这些操作,并且我们希望使 nums 中的所有元素相等。我们需要找到所需的最小总成本。所以,如果输入像 nums = [3, 2, 4] costs = [1, 10, 2],那么输出将是 5,因为如果我们可以将数字 3 减少到 2,成本为 1。然后我们可以将 4 减小两次,成本为 ... 阅读更多
241 次浏览
假设我们有一棵二叉树,我们需要找到同一棵树,但每个节点的值都替换为其值 + 其左右子树的所有和。所以,如果输入像那么输出将是为了解决这个问题,我们将遵循以下步骤:定义一个函数 tree_sum()。这将获取树的根如果根为 null,则返回 0根的数据 := 根的左子树的 tree_sum() + 根的右子树的 tree_sum() + 根的数据返回根的数据从主方法执行以下操作:tree_sum(root)返回 root让我们看看以下实现以更好地理解 ... 阅读更多
410 次浏览
假设我们有两个单词 S 和 T,我们需要找到将 S 转换为 T 所需的最少操作次数。操作可以是三种类型,分别是插入字符、删除字符、替换字符。所以如果输入字符串是“evaluate”和“fluctuate”,那么结果将是 5。为了解决这个问题,我们将遵循以下步骤:n := s 的大小,m := t 的大小,创建一个大小为 n + 1 的数组 dp对于范围 0 到 n 的 i:dp[i] := 一个大小为 m + 1 的新数组对于范围 0 到 m 的 j:dp[i, ... 阅读更多
207 次浏览
假设我们有一个字符串 s,我们需要找到使用所有字符可以生成的不同的回文串的数量。如果答案非常大,则将结果模 10^9 + 7。所以,如果输入像 s = "xyzzy",则输出将是 2,因为我们可以生成 "zyxyz" 和 "yzxzy"。为了解决这个问题,我们将遵循以下步骤 -m = 10^9+7char_freq := 一个保存 s 中每个字符及其频率的映射odd := 0对于 char_freq 中的每个字符 k 和频率 v,执行以下操作:如果 v 模 2 等于 1,则odd := odd + 1如果 odd > ... 阅读更多