LeetCode300题计划
MY_NEW_LIFE
开启新的学习之路
展开
-
LeetCode300题计划——12.三数之和
题目: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意: 答案中不可以包含重复的三元组。 1、首先对数组进行排序,排序后固定一个数 nums[i],再使用左右指针指向nums[i]后面的两端,数字分别为 nums[L] 和 nums[R],计算三个数的和 sum 判断是否满足为 0,满足则添加进结果集 2、如果 nums[i]大于 0,则三数之和必然无法等于 0,结束循环 3、.原创 2021-07-02 20:49:19 · 150 阅读 · 0 评论 -
LeetCode300题计划——11.最长公共前缀
题目: 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 class Solution11 { public String longestCommonPrefix(String[] strs) { // 1.如果传进来的是空数组,则返回空 if(strs.length == 0) return ""; // 2.先假设最长公共子串是第一个字符串 String ans = s.原创 2021-07-01 21:37:30 · 94 阅读 · 0 评论 -
LeetCode300题计划——10. 罗马数字转整数
题目: class Solution10 { //先把这些罗马字符的含义放在一个hashmap中 Map<Character, Integer> symbolValues = new HashMap<Character, Integer>() { { put('I', 1); put('V', 5); put('X', 10); put('L', 50); put('C', 100); put('D', 500); put('M.原创 2021-06-28 16:35:16 · 87 阅读 · 0 评论 -
LeetCode300题计划——9. 盛最多水的容器
题目: 给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器。 class Solution9 { public int maxArea(int[] height) { // 定义左右指针 int l = 0, r = height.length - 1;.原创 2021-06-28 16:17:59 · 62 阅读 · 0 评论 -
LeetCode300题计划——8.正则表达式匹配
题目: package ListNode; public class IsMatch { public static void main(String[] args) { // TODO Auto-generated method stub } } class Solution8 { public boolean isMatch(String s, String p) { // m,n是原字符串和匹配字符串的长度 int m = s.length.原创 2021-06-28 14:08:34 · 122 阅读 · 0 评论 -
LeetCode300题计划——7.字符串转换整数 (atoi)
题目: class Solution7 { public int myAtoi(String str) { int len = str.length(); // str.charAt(i) 方法回去检查下标的合法性,一般先转换成字符数组 char[] charArray = str.toCharArray(); // 1、去除前导空格 int index = 0; while (index <.原创 2021-06-27 17:50:29 · 83 阅读 · 0 评论 -
LeetCode300题计划——6.整数反转
题目: 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 class Solution6 { public int reverse(int x) { int res = 0; while (x != 0) { // 每次取末尾数字 int tmp = x % 10; // 判断是否 大于 最.原创 2021-06-27 15:15:24 · 88 阅读 · 0 评论 -
LeetCode300题计划——5.最长回文子串
题目: 给你一个字符串 s,找到 s 中最长的回文子串。 package ListNode; public class longestPalindrome { public static void main(String[] args) { // TODO Auto-generated method stub } } class Solution5 { public String longestPalindrome(String s) { int len = s..原创 2021-06-26 22:24:53 · 267 阅读 · 2 评论 -
LeetCode300题计划——4. 寻找两个正序数组的中位数
题目: 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 package ListNode; public class findMedianSortedArrays { public static void main(String[] args) { // TODO Auto-generated method stub } } class Solution4 { public double findMed.原创 2021-06-26 20:20:20 · 78 阅读 · 0 评论 -
LeetCode300题计划——3.最长子串
题解和思路看官方解答。 // 第一种写法 class Solution { public int lengthOfLongestSubstring(String s) { // 哈希集合,记录每个字符是否出现过 Set<Character> occ = new HashSet<Character>(); int n = s.length(); // 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动 int rk = 0, ans = 0;原创 2021-06-26 14:36:52 · 71 阅读 · 0 评论 -
LeetCode300题计划——2.两数相加
题目: 给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0开头。 方法一: ...原创 2021-06-25 21:12:04 · 100 阅读 · 0 评论 -
LeetCode300题计划——1.两数之和
题目: 给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 方法一:暴力求解 思路分析:i=0,j从1到n开始遍历;i=1,j从2到n开始遍历...循环遍历数组中任意两个数直到两数之和等于target 时间复杂度:两层for循环,时间复杂度为O(n²),其中n是数组中的元素数量。最坏情况...原创 2021-05-28 20:34:09 · 91 阅读 · 0 评论