先来回顾一下上期的问题及答案:
合并两个有序数组
题目描述:
给你两个有序整数数组 和 ,请你将 合并到 中,使 成为一个有序数组。
初始化 和 的元素数量分别为 和 。你可以假设 的空间大小等于 ,这样它就有足够的空间保存来自 的元素。
示例 1:
输出:
示例 2:
输入:
输出:
提示:
以下是使用 TypeScript 实现的解答:
解题思路:
由于 的空间足够容纳两个数组的元素,我们可以从后往前遍历两个数组,并将较大的元素放在 的末尾。
使用三个指针,分别指向 的有效元素的末尾、 的末尾,以及合并后的数组的末尾。
从后往前遍历,比较 和 的大小,将较大的元素放在 的末尾,并将对应指针往前移动。
如果 的元素还没有遍历完,将其余元素直接复制到 的末尾。
最终 中就是合并后的有序数组。
时间复杂度分析:
遍历两个数组的时间复杂度是 O(m + n),其中 m 和 n 分别为两个数组的长度。
空间复杂度分析:
使用了常数个额外变量,空间复杂度为 O(1)。
下一期
有效的括号
题目描述:
给定一个只包含字符 ,,,, 和 的字符串 ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入:输出:
示例 2:
输入:输出:
示例 3:
输入:输出:
示例 4:
输入:输出:
示例 5:
输入:输出:
提示:
`1
仅由括号 ,,,, 和 组成
领取专属 10元无门槛券
私享最新 技术干货