假设我们有一个小写字符串列表,我们需要找到最长的公共前缀。例如,如果输入是 ["antivirus", "anticlockwise", "antigravity"],则输出将是 "anti"。为了解决这个问题,我们将遵循以下步骤:对字符串列表按字母顺序排序;prefix := 新列表;flag := 0;for i in range(0, len(words[0])): for j in words: if j[i] != prefix[-1]: prefix.pop() flag = 1 break if flag == 1: break; 返回连接 prefix 中所有元素后的字符串…… 阅读更多
假设我们给定一个名为 nums 的数字列表,我们想使这些值相等。现在进行一个操作,我们从列表中选择一个元素并增加其他每个值。我们需要找到使元素值相等所需的最小操作次数。例如,如果输入是 [2, 4, 5],则输出将是 5。为了解决这个问题,我们将遵循以下步骤:min_val := min(nums); s := 0; for num in nums: s += (num - min_val); 返回 s。让我们来看下面的实现以更好地理解…… 阅读更多
假设我们有一个单链表。该链表表示一个二进制数,最高有效位在最前面,我们需要将其返回为十进制数。例如,如果输入是 [1, 0, 1, 1, 0],则输出将是 22。为了解决这个问题,我们将遵循以下步骤:l := 新列表;while node is not null: l.append(node.val); node = node.next; k := 0, v:= 0; for i in range(len(l) - 1, -1, -1): if l[i] == 1: v += 2**k; k += 1;…… 阅读更多
假设我们有一个字符串 s,我们需要找到如果我们最多可以在给定字符串 s 中的两个字符之间进行一次交换,则可以生成的字典序最小的字符串。例如,如果输入是 "zyzx",则输出将是 "xyzz"。为了解决这个问题,我们将遵循以下步骤:temp := 一个大小为 s 的数组并填充 0;m:= len(s) - 1;for i in range(len(s) - 1, -1, -1): if s[i] < s[m]: m = i; temp[i] = m; for i in range(0, len(s)): a :=…… 阅读更多