LeetCode 91 解码方法

一条包含字母 A-Z 的消息通过以下映射进行了 编码 : 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,”11106″ 可以映射为: 注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F” ,这是由于 “6” 和 “06” 在映射中并不等价。 给你一个只含数字的 非空 字符串 s ,请计算并返回 解码 方法的 总数 。 题目数据保证答案肯定是一个 32 位 的整数。 示例 1: 示例 2: 示例 3: 提示: 解题: 超时了,看了答案才知道方向错了。。 官方解答: 1.动态规划 注意到在状态转移方程中,f(i)的值仅与f(i-1)和f(i-2)有关,因此我们可以使用三个变量进行状态转移,省区数组的空间。 最后验证了一下,超时的那个在本地和官方解法的答案是一致的

Continue reading


LeetCode 90 子集 II

给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。 示例 1: 示例 2: 提示: 解题: 官方解答: 1.迭代法实现子集枚举 2.递归法实现子集枚举

Continue reading


LeetCode 89 格雷编码

n 位格雷码序列 是一个由 2^n 个整数组成的序列,其中: 给你一个整数 n ,返回任一有效的 n 位格雷码序列 。 示例 1: 示例 2: 提示: 解题: 官方解答: 1.归纳法 2.公式法 代码居然这么简单。。。 不行,得找个理由,二进制是我的盲区啊,这个理由不错^_^

Continue reading


LeetCode 88 合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。 示例 1: 示例 2: 示例 3: 提示: 进阶:你可以设计实现一个时间复杂度为 O(m + n) 的算法解决此问题吗? 解题: 官方解答: 1.直接合并后排序 2.双指针 3.逆向双指针

Continue reading