题目: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 解题: 逐个比较,按升序排列 代码: 官方解答:
算法
LeetCode 20 有效的括号
题目: 给定一个只包括 ‘(‘,’)’,'{‘,’}’,'[‘,’]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 解题: 和栈一样,先进后出匹配就可以 代码: 官方解答:
LeetCode 19 删除链表的倒数第N个结点
LeetCode 18 四数之和
题目: 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复): 0 <= a, b, c, d < n a、b、c 和 d 互不相同 nums[a] + nums[b] + nums[c] + nums[d] == target 你可以按 任意顺序 返回答案 。 解题: 循环处理,这次多了一个,应该不是双指针了吧 代码: 官方解答:排序+双指针 排序,然后先循环一次最外面的一层,再双指针,又是没有掌握双指针的一天。。。
LeetCode 17 电话号码的字母组合
题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 解题: 写一个映射表,然后把每一个数字拆分成字母组成的数组,后面数字代表的字母分开跟到前面的数组后面 代码 官方解答:回溯
LeetCode 16 最接近的三数之和
题目: 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 解题: 又是双指针,我还没学会 代码: 官方解答:排序+双指针 best初始化为math.MaxInt时会溢出
LeetCode 15 三数之和
题目: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 解题: 三层循环,加起来为0的数组合并起来 代码: 提交没有通过,最终结果没有去重 官方解答:排序+双指针 我终究还是没能把双指针用到实例中去
LeetCode 14 最长公共前缀
题目: 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 解题: 看到哪一位不相同了,前缀就是之前的那些 代码: 官方解答1:横向扫描 官方解答2:纵向扫描 官方解答3:分治 官方解答4:二分查找法 我的方法算是纵向扫描了,就代码量来说还是纵向扫描最少,也最好理解
LeetCode 13 罗马数字转整数
题目: 罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写作 II ,即为两个并列的 1。12 写作 XII ,即为 X + II 。27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写作 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况: I 可以放在 V (5) 和 X (10) […]
LeetCode 12 整数转罗马数字
题目: 罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况: I 可以放在 V (5) 和 X (10) […]