LeetCode
神算子呦呦呦
这个作者很懒,什么都没留下…
展开
-
最长公共前缀
题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。解题思路如果数组为空或者某个字符串为空,则直接返回"";否则将第一个字符串作为最长公共前缀开始与每个字符串的每个字符从前向后开始比较,得到最长前缀。代码 publi原创 2020-08-01 16:58:15 · 101 阅读 · 0 评论 -
罗马数字转整数
题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等原创 2020-08-01 16:51:17 · 118 阅读 · 0 评论 -
回文数
题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。题解如果是负数或者这个数个位是0,则直接返回false,否则将这个数反转,进行比较,但是考虑到溢出问题,举例如下:例如原创 2020-07-31 20:58:33 · 389 阅读 · 0 评论 -
魔术索引
题目魔术索引。 在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。示例1:输入:nums = [0, 2, 3, 4, 5]输出:0说明: 0下标的元素为0示例2:输入:nums = [1, 1, 1]输出:1题解采用二分法查找元素,当nums[mid] = mid时,继续向前查找(因为要找最小的下标),如果mid前面没有原创 2020-07-31 20:49:43 · 86 阅读 · 0 评论 -
整数拆分
题目给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。题解对于的正整数 n,当 n ≥2 时,可以拆分成至少两个正整数的和。当n拆分出一个k时,剩下的n - k可以选择继续拆分也可以选择不拆分。所以原创 2020-07-31 20:42:26 · 225 阅读 · 0 评论 -
整数翻转
@神算子呦呦呦 整数反转题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。题解用一个数对10求余数的办法从后向前获取每一位数,求完一位数后整体除以10,将求完每一位数*10+余数赋值给新数字,即可求出反转后的值。在此过程中注意判断是否溢出(数值范围为 [−2的31次方,2的31次方]),因为每次求出的余数要进行 rev = rev * 10 + pop;所以只要判断 rev 与 Integer.MIN_VALUE / 10 和 Integer.MAX_VALUE原创 2020-07-28 15:35:36 · 115 阅读 · 0 评论 -
【LeetCode】两数之和
【LeetCode】两数之和两数之和(中文版)给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。题解使用Map存储数组中所有数的值和下表,然后遍历数组,查询Map中等于target-nums[i]的值,取两个值的下标。代码(Java)代码如下:public class TwoSum { public static int[] twoSum(i原创 2020-07-24 22:08:00 · 92 阅读 · 0 评论