假设我们有一个字符串 s,我们重复删除第一个连续重复的字符。我们需要找到最终的字符串。因此,如果输入类似 s = "xyyyxxz",则输出将为 "z",因为 "yyy" 是将被删除的第一个连续重复字符。所以我们有 "xxxz"。然后 "xxx" 将被删除,最终得到 "z"。为了解决这个问题,我们将遵循以下步骤:- stack := 一个新的栈- i := 0- while i < s 的大小,执行:- if stack 不为空且 stack 的顶部与 s[i] 相同,则- x := 从 stack 中删除最后一个元素- while ... 阅读更多
假设我们有一串括号;我们需要编写一个函数来计算要移除的最小括号数,以使字符串正确(每个左括号最终都被关闭)。因此,如果输入类似 "(()))(",则输出将为 2,因为正确的字符串是 "(())",需要移除 ")("。为了解决这个问题,我们将遵循以下步骤:- total := 0, temp := 0- 对于 s 中的每个 p,执行:- if p 与 "(" 相同,则- total := total + 1- 否则,当 p 与 ")" 相同且 total 不为 0 时,则- total := total - 1- 否则,temp := ... 阅读更多
假设我们有一组区间;我们需要找到应该移除的最小区间数,以使其余区间不重叠。因此,如果区间是 [[8, 10], [3, 5], [6, 9]],则输出将为 1,因为我们必须移除 [6, 9] 以使所有其他区间不重叠。为了解决这个问题,我们将遵循以下步骤:- n := 数组的大小- if n 为 0,则返回 0- count := 1- 根据区间的结束时间对数组进行排序- end := 第一个区间的结束日期- for i in range 1 to ... 阅读更多
假设我们有一个包含 n 个非负整数的数组。这些表示高度,其中每个条的宽度为 1,我们需要计算下雨后它能够收集多少水。因此地图将类似于:- 在这里我们可以看到有 8 个蓝色方块,所以输出将是 8。为了解决这个问题,我们将遵循以下步骤:- 定义一个栈 st,water := 0 和 i := 0- while i < height 的大小,执行:- if 栈为空或 height[stack top] >= height[i],则将 i 推入栈中,将 i 增加 1- otherwise- x := stack ... 阅读更多