![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
l昨日青天
这个作者很懒,什么都没留下…
展开
-
17. 电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 ('2', "abc"); ('3', "def"); ('4', "ghi"); ('5', "jkl"); ('6', "mno"); ('7', "pqrs"); ('8', "tuv"); ('9', "wxyz"); public List<String> letterCombinations(String digits)原创 2021-04-02 14:19:32 · 198 阅读 · 0 评论 -
16. 最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 public class LeetCode_16_threeSumClosest { public int threeSumClosest(int[] nums, int target) { Arrays.sort(nums); int n = nums.length;原创 2021-04-02 14:08:14 · 161 阅读 · 0 评论 -
15. 三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 public class LeetCode_15_threeSum { public List<List<Integer>> threeSum(int[] nums) { int n = nums.length; Arrays.sort(nums); List原创 2021-04-02 14:03:41 · 96 阅读 · 0 评论 -
14. 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 如:strs = [“flower”,“flow”,“flight”] ===> “fl” 如:strs = [“dog”,“racecar”,“car”] ===> “” public class LeetCode_14_longestCommonPrefix { public String longestCommonPrefix(String[] strs) { if (str原创 2021-04-02 13:50:46 · 76 阅读 · 0 评论 -
12. 整数转罗马数字
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 public class LeetCode_12_intToRoman { int[] values = {1000, 900, 500, 400, 100, 9原创 2021-04-02 11:06:45 · 67 阅读 · 0 评论 -
13. 罗马数字转整数
public class LeetCode_13_romanToInt { public int romanToInt(String s) { if (s == null || s.length() == 0) { return 0; } int preNum = getByChar(s.charAt(0)); int sum = 0; for (int i = 1; i < s.leng原创 2021-04-02 11:05:43 · 67 阅读 · 0 评论 -
11. 盛最多水的容器
给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器。 输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。 package HelloWorld; p原创 2021-04-01 17:19:44 · 70 阅读 · 0 评论 -
10. 正则表达式匹配
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ‘*’ 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 示例 1: 输入:s = “aa” p = “a” 输出:false 解释:“a” 无法匹配 “aa” 整个字符串。 示例 2: 输入:s = “aa” p = “a*” 输出:true 解释:因为 ‘*’ 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 ‘a’。因此,原创 2021-04-01 16:55:31 · 164 阅读 · 1 评论 -
9. 回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。 public class LeetCode_9_isPalindrome { public boolean isPalindrome(int x) { if (x < 0) { return false; } int y = 0;原创 2021-03-31 15:14:54 · 69 阅读 · 0 评论 -
8. 字符串转换整数 (atoi)
请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。 将前面步骤读入的这些数字转换为整数(即,“123”原创 2021-03-31 15:07:04 · 83 阅读 · 0 评论 -
7. 整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 public class LeetCode_7_Num_Reverse { public static int reverse(int x) { int res = 0; while (x != 0) { int temp = x % 10; if原创 2021-03-31 14:25:28 · 64 阅读 · 0 评论 -
6. Z 字形变换
将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下: P A H N A P L S I I G Y I R 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。 public class LeetCode_6_Z_convert { public static String原创 2021-03-31 14:10:06 · 68 阅读 · 0 评论 -
4. 寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 示例 1: 输入:nums1 = [1,3], nums2 = [2] 输出:2.00000 解释:合并数组 = [1,2,3] ,中位数 2 示例 2: 输入:nums1 = [1,2], nums2 = [3,4] 输出:2.50000 解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5 public class LeetCode_4_Find原创 2021-03-31 10:13:36 · 103 阅读 · 0 评论 -
3. 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 输入: s = “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 输入: s = “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 public class LeetCode_3_LengthOfLongestSubstring { public int LengthOfLongestSubstringMethod(String s) {原创 2021-03-31 10:05:05 · 66 阅读 · 0 评论 -
2. 两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 public class LeetCode_2_TwoNumSum { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode root = new ListNode(0)原创 2021-03-31 09:53:15 · 74 阅读 · 0 评论 -
1. 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 public class LeetCode_1_TwoSum { public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.leng原创 2021-03-31 09:41:37 · 67 阅读 · 0 评论 -
5. 最长回文子串
思路: 对于一个子串来说,如果它是回文串,并且长度大于2,那么去了首尾两个字母之后,它仍然是个回文串。 我们用P(i,j)表示字符串s的第i到第j个字母组成的串(之后用s(i:j)表示)是否为回文串。 P(i,j)= true,如果s(i:j)是回文串; P(i,j)=false,其它情况->s(i:j)不是回文串或者i>j; 那么就可以写出动态规划的状态转移方程: P(i,j)=P(i+1,j-1)&&(s(i)==s(j)) 也就是说,如果s(i:j)为回文串,必须同时满足两原创 2021-01-13 17:27:38 · 163 阅读 · 0 评论