题目: 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 解题: 又是双指针,我还没学会 代码: 官方解答:排序+双指针 best初始化为math.MaxInt时会溢出
Month: August 2022
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) […]
LeetCode 11 盛最多水的容器
题目: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 解题: 循环求最大值,大力出奇迹 代码: 官方给了个很长很变态的数组,测试超时了,我觉得代码是对的,消耗估计太多了 官方解答 双指针,只循环一次,牛逼
LeetCode 10 正则表达式匹配
题目: 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ‘*’ 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 解题: 函数里面写了很多分支,还是不对,直接抄答案了 官方解答 说是动态规划,讲解看懂了,自己依然写不出来,只能再看看吧
LeetCode 9 回文数
题目: 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 解题: 类似reverse函数,小于0的由于有负号,故都不符合,大于等于0的直接反转就好 代码: 官方解答: 官方只循环了一半就搞定了,牛逼
LeetCode 8 字符串转换整数 (atoi)
题目: 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。确定最终结果是负数还是正数。如果两者都不存在,则假定结果为正。 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。 将前面步骤读入的这些数字转换为整数(即,”123″ -> 123, “0032” -> 32)。如果没有读入数字,则整数为 0 。必要时更改符号(从步骤 2 开始)。 如果整数数超过 32 位有符号整数范围 [−2^31, 2^31 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −2^31 的整数应该被固定为 −2^31 ,大于 2^31 − 1 的整数应该被固定为 2^31 − 1 。 返回整数作为最终结果。 注意: 本题中的空白字符只包括空格字符 ‘ ‘ 。 除前导空格或数字后的其余字符串外,请勿忽略 […]
LeetCode 7 整数反转
题目: 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 解题: 对于给出的整数取模,然后乘以10即可,乘之前判断一下之前的和是否在最大值和最小值的十分之一范围内 代码: 官方题解和我写的差不多 哦耶