自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 LeetCode刷题笔记(Java实现)-- 35. 搜索插入位置

题目难度:Easy题目要求:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2算法思路:1、要求是时间复杂度为O(log n),则想到二分法;2、考虑特殊情况,若目标值应该插入数组最右端时,ans=nums.length;若插入最左端,即ans=0;3、根据二分法,需要知道left(最

2022-05-31 16:18:25 164 1

原创 LeetCode刷题笔记(Java实现)-- 28. 实现 strStr()

题目难度:Easy题目要求:实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。算法思路:1、三

2022-05-24 11:30:38 250

原创 LeetCode刷题笔记(Java实现)-- 26. 删除有序数组中的重复项

题目难度:Easy题目要求:给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k 个位置后返回 k 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条

2022-05-18 11:02:36 191

原创 LeetCode刷题笔记(Java实现)-- 22. 括号生成

题目难度:Medium题目要求:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]示例 2:输入:n = 1输出:[“()”]算法思路:深度优先遍历+回溯法1.lc,rc分别表示当前左括号和右括号的个数,只有当lc,rc都等于n时,才满足要求,可以把当前的字符串加入数组中;2.如果左括号数小于n,就可以再+“(”;

2022-04-26 17:46:38 647

原创 LeetCode刷题笔记(Java实现)-- 10. 正则表达式匹配

题目难度:Hard题目要求:给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘’ 的正则表达式匹配。‘.’ 匹配任意单个字符'’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。示例 1:输入:s = “aa”, p = “a”输出:false解释:“a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = “aa”, p = “a*”输出:true解释:因为 ‘*’ 代表可以匹配零个或多个前面的那一个元素, 在

2022-04-19 20:23:52 318

原创 LeetCode刷题笔记(Java实现)-- 11. 盛最多水的容器

题目难度:medium题目要求:给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。算法

2022-04-12 16:52:42 143

原创 LeetCode刷题笔记(Java实现)-- 19. 删除链表的倒数第 N 个结点

题目难度:Medium题目要求:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]算法思路:方法一:计算链表长度1.从头节点开始,如果非空,长度+1,直至计算出链表的长度length;2.利用循环,将指针定位到第length-n+1的节点,为了与倒数第n个节点匹配,循环应从i=1开始;3.然后用cur.next=cur.next.next,将倒数第n个节点删掉,最后返回头节点即可。

2022-04-05 21:10:21 914

原创 LeetCode刷题笔记(Java实现)-- 23. 合并K个升序链表

题目难度:Hard题目要求:给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6算法思路:1.先考虑设

2022-03-30 17:03:53 202

原创 LeetCode刷题笔记(Java实现)-- 17.电话号码的字母组合

题目难度:Medium题目要求:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]编码思路:(建议对照代码理解)1.创建最后输出的字符组合的集合combinations;注:ArrayList 类是一个可以动态修改的数组,与普通数组的区别就

2022-03-23 20:39:58 706

原创 LeetCode刷题笔记(Java实现)-- 16.最接近的三数之和

题目难度:medium题目要求:给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。示例 1:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。示例 2:输入:nums = [0,0,0], target = 1输出:0算法流程:该题可以参考【

2022-03-17 11:40:37 641

原创 LeetCode刷题笔记(Java实现)-- 15.三数之和

题目难度:medium题目要求:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]算法流程:1)考虑特殊情况,如果数组的长度小于3

2022-03-15 11:56:34 1712

原创 LeetCode刷题笔记(Java实现)-- 20.有效的括号

题目难度:Easy题目要求:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false题目分析:用栈可解决该问题,需要做的准备空间有:一个栈,用以按顺

2022-03-07 20:02:40 81

原创 LeetCode刷题笔记(Java实现)-- 14. 最长公共前缀

题目难度:Easy题目要求:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。题目分析:解题方法有很多种,根据个人习惯,最后采用纵向扫描的方法,简单易懂。纵向扫描,从左到右依次遍历所有字符串的每一列,比较其是否相同,如果第一列相同,就比较第

2022-03-04 10:41:34 314

原创 LeetCode刷题笔记(Java实现)-- 21. 合并两个有序链表

题目难度:Easy题目要求:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。如图:题目分析:方法一:递归首先排除特殊情况,即若list1为null,就直接返回list2,若list2为空,就直接返回list1。利用merg函数,若list1的当前节点比list2的当前节点小,则将ist1的当前节点写入结果,然后递归地决定下一个返回的节点。代码://递归class Solution { public ListNode mergeT

2022-03-01 17:46:57 489

原创 LeetCode刷题笔记(Java实现)-- 13. 罗马数字转整数

题目难度:Easy题目要求:罗马数字包含以下七种字符: 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。这个特殊的规则只适用于以下六种

2022-02-24 20:12:51 114

原创 LeetCode刷题笔记(Java实现)-- 9. 回文数

**题目难度:**Easy题目要求:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01

2022-02-22 19:57:28 248

原创 LeetCode刷题笔记(Java实现)-- 5. 最长回文子串

题目难度:Medium题目要求:##动态规划对于一个子串而言,如果它是回文串,并且长度大于 2,那么将它首尾的两个字母去除之后,它仍然是个回文串。例如对于字符串 {ababa},如果我们已经知道“bab” 是回文串,那么 “ababa” 一定是回文串,这是因为它的首尾两个字母都是“a”。根据这样的思路,我们就可以用动态规划的方法解决本题。我们用 P(i,j) 表示字符串 s 的第 i 到 j 个字母组成的串(下文表示成s[i:j])是否为回文串:这里的「其它情况」包含两种可能性:s[i,j]

2022-01-25 16:54:37 85

原创 LeetCode刷题笔记(Java实现)-- 3. 无重复字符的最长子串

题目难度:Medium题目要求:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。##哈希集合两个指针,分别表示子串的左右边界,左指针不动,右指针不断右移,每次将一个字符加入哈希集合,并且判断,是否和原集合中的字符重复;如果重复,就输出当前的非重复的字符长度,然后左指针右移一位,再寻找新的不重复的子串,最后从所有不重复子串的长度中选出最长的长度返回。/* * @lc app=leetcode.cn id=3 lang=java * * [3] 无重复字符的最长子串

2022-01-23 16:00:50 445

原创 LeetCode刷题笔记(Java实现)-- 2. 两数相加

题目要求##解法分析首先,初始化一个新的空的链表,进位也初始化为0;如果,节点L1非空或者L2非空,就是还可以继续相加的话,就进入循环;循环{如果当前值不为空,就取该位置的数,否则就赋值为0,即保证两链表长度相等,不足的补0;求和即将两个链表相同位置的数相加,还要加上进位数!!!如果头、尾节点为空,就把求的和整除10后的余数生成新节点后,赋值给头、尾节点,第一个节点就生成了;如果头、尾节点不为空,尾节点的next指针指向新生成的节点,尾节点后移一位;进位数=sum/10;节点L1和L2

2022-01-22 17:12:25 478

原创 LeetCode刷题笔记(Java实现)-- 1. 两数之和

LeetCode刷题笔记(1)–两数之和题目要求##方法1:暴力求解先确定数组长度为 n两个for循环如果两数相加为目标值,则返回其下标(定义一个新数组),否则继续循环;题目规定必有解,若没有,返回新数组【0】; class Solution { public int[] twoSum(int[] nums, int target) { int n = nums.length; for(int i=0;i<n;++i){

2022-01-21 12:22:15 206

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除