LeetCode刷完所有题
目的从第一题开始,全部做一遍。付费的不做
见闻色霸气~
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
564. 寻找最近的回文数
题目信息给定一个表示整数的字符串 n ,返回与它最近的回文整数(不包括自身)。如果不止一个,返回较小的那个。“最近的”定义为两个整数差的绝对值最小。示例 1:输入: n = "123"输出: "121"示例 2:输入: n = "1"输出: "0"解释: 0 和 2是最近的回文,但我们返回最小的,也就是 0。思路更具体的思路见代码注释代码/** * 每一个数有五种可能的情况 假设这个数是 abcde 因为是回文数,所以只需要看前一半 * 1:原创 2022-03-02 13:31:53 · 481 阅读 · 11 评论 -
LeetCode_33. 搜索旋转排序数组
目录题目信息样例思路代码题目信息整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转后原创 2022-01-19 21:16:43 · 494 阅读 · 12 评论 -
LeetCode 150. 逆波兰表达式求值
题目信息 要求给一个字符串数组,是后缀表达式,需要你转换成中缀表达式计算。解题思路将tokens数组放到一个树中,根据后序遍历利用一个栈来完成计算。实现代码class Solution { public int evalRPN(String[] tokens) { Stack<Integer> s=new Stack<> (); for (int i = 0 ; i <tokens.length ; i++) {原创 2022-01-15 01:51:30 · 4051 阅读 · 0 评论 -
双指针思路简单易懂的LeetCode167. 两数之和 II - 输入有序数组
题目信息:给定一个已按照非递减顺序排列的整数数组 numbers,请你从数组中找出两个数满足相加之和等于目标数target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标从1开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。示例 1:输入:numbers = [2,7,11.原创 2022-06-25 14:33:50 · 407 阅读 · 1 评论 -
LeetCode 59. 螺旋矩阵 II
题目信息解析:和54题是一样的,只不过要求变了一下,换汤不换药。具体逻辑看54题的题解。文章链接实现代码: public int[][] generateMatrix(int n) { int res[][]=new int[n][n]; boolean[][]used=new boolean[n][n]; int dx[]={0,1,0,-1}; int dy[]={1,0,-1,0}; for(int i=1,x=0,y=0,d=0原创 2021-11-23 11:10:34 · 407 阅读 · 1 评论 -
螺旋矩阵LeetCode_54
题目信息提示:m == matrix.lengthn == matrix[i].length1 <= m, n <= 10-100 <= matrix[i][j] <= 100解题思路:螺旋矩阵的顺序是下图这样的,可以根据x,y轴的1或者0来判断此时矩阵的方向是什么。可以定义一个布尔数组,大小和题目数组一样,如果走过了就将false改为ture,代表走过了。在走到下一个坐标前需要判断坐标是否合法。是否合法取决于方向是不是正确,有没有超过数组大小,有没有用过。如原创 2021-11-23 09:57:36 · 294 阅读 · 0 评论 -
水果成篮,双指针图文并茂LeetCode_904
题目信息示例 1:输入:[1,2,1]输出:3解释:我们可以收集 [1,2,1]。示例 2:输入:[0,1,2,2]输出:3解释:我们可以收集 [1,2,2]如果我们从第一棵树开始,我们将只能收集到 [0, 1]。示例 3:输入:[1,2,3,2,2]输出:4解释:我们可以收集 [2,3,2,2]如果我们从第一棵树开始,我们将只能收集到 [1, 2]。示例 4:输入:[3,3,3,1,2,1,1,2,3,3,4]输出:5解释:我们可以收集 [1,2,原创 2021-11-22 10:05:58 · 457 阅读 · 0 评论 -
长度最小的子数组 典型双指针LeetCode_209
题目信息给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target的长度最小的连续子数组[numsl,numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:输入:target = 4, nums = [1,4,4]原创 2021-11-22 08:07:24 · 184 阅读 · 5 评论 -
搜索插入位置LeetCode_35
题目信息给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。 ...原创 2021-11-20 21:13:22 · 391 阅读 · 1 评论 -
在排序数组中查找元素的第一个和最后一个位置二分解决LeetCode_34
题目信息给定一个按照升序排列的整数数组 nums,和一个目标值 target找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums = [], target = 0输出:[-1,-1]解法:原创 2022-06-25 14:34:02 · 308 阅读 · 0 评论 -
移除元素LeetCode_27
题目信息给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于val的元素并返回移除后数组的新长度。不要使用额外的数组空间你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 样例1:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2,并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度原创 2022-06-25 14:34:25 · 182 阅读 · 0 评论 -
删除有序数组中的重复项LeetCode26双指针法解决
题目信息给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。样例1:输入:nums = [1,1,2]输出:2, nums = [1,2]解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。样例2:输入:nums = [0,0,1,1,1,2,2,3,3,4]输出原创 2022-06-25 14:34:20 · 755 阅读 · 0 评论 -
LeetCode20. 有效的括号。找对象的故事
题目信息给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例1:输入:s = "()"输出:true示例2:输入:s = "()[]{}"输出:true示例3:输入:s = "(]"输出:false示例4:输入:s = "([)]"输出:false解题思路题目的意思我给大家翻译翻译:把括号之间的匹配想象成找对象,左括号原创 2021-11-17 08:26:32 · 642 阅读 · 17 评论 -
LeetCode3. 无重复字符的最长子串
题目信息给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串原创 2022-06-25 14:35:07 · 176 阅读 · 2 评论 -
LeetCode-2两数相加
题目信息:两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]思路:就像和小学计算加法一样,先加个位在看原创 2022-06-25 14:35:22 · 444 阅读 · 1 评论 -
字符串“aabcccccaaa”压缩成“a2b1c5a3“还要返回更小的?力扣面试题 01.06. 字符串压缩讲解
题目信息解题方法 :双指针遍历创建ch,让它获取S的第一个字符,定义计数器count初始化为1,接下来让ch和S的下一个字符比较,如果他们相等,count+1,不想等的话,创建一个StringBuilder的实例对象ans,让ans使用append方法,拼接当前的ch,再拼接它的count,让把当前的字符赋给ch,计数器归1,继续进行循环。循环结束后把最后的ch和他的count添加到ans里。返回ans和S.length的较小值。代码实现class Solution { public原创 2021-09-01 09:55:31 · 1071 阅读 · 6 评论 -
LeetCode_491 递增子序列 /大厂笔试题讲解
目录标题一、题目信息二、解题思路三、解题代码四、其他好题分享一、题目信息本题和LeetCode_491相同,这里我以牛客网的形式写题。二、解题思路题目要求的只需要找到长度为三的子序列,还不要求是连续的。创建两个引用,first,second,分别表示第一大和第二大的数字,如果遍历的时候数组中还有比他们两个数还大的数字,那长度为3的子序列不就有了吗?如果遍历完了还么有,就说明是真的没有了,返回false。还有其他两种情况1、遍历数组的时候遇到的数(这里称为P)first比p大,既然连子序列.原创 2021-09-11 20:31:40 · 1434 阅读 · 42 评论 -
leetcode 21. 合并两个有序链表
每日一题 Day 1从今天开始每日一题打卡啦,别人是一题但我还就那个两题,因为我一题顶别人两题。今天是第一天文章目录每日一题 Day 1LeetCode 第二十一题解题方法:迭代思路我们拿题目给出的例子过一遍。代码结尾LeetCode 第二十一题题目信息解题方法:迭代时间复杂度0(m+n),m,n是两个链表的长度。空间复杂度0(1),只需要常数放变量就行。在保证能理解的情况下最大限度降低时间复杂度,这种接法对于刚开始的同学还是很友好的,是比较简单理解的一种。思路当L1原创 2021-05-26 18:36:26 · 610 阅读 · 3 评论 -
LeetCode_231. 判断一个数是否为2 的幂,与运算一行代码解决
一.题目信息二、题解如果一个数是2的n次幂,那么它首先一定是一个正整数,并且在它的二进制中只有最高位是1,其余都是0。假设这个数是n是二的幂,它的二进制只有最高位是1,那么n-1它的二进制就是都是1,我们使用按位与运算让n&(n-1)如果等于0,那么它一定就是2的n次幂。三、代码实现class Solution { public boolean isPowerOfTwo(int n) { return n>0 &&(n&(n-1))==0;原创 2021-09-02 12:48:19 · 636 阅读 · 0 评论 -
三种方法任君挑选 LeetCode_136只出现一次的数字
LeetCode_136一、题目信息二、题解2.1、HashMap2.2、HashSet2.3、异或运算一、题目信息一个数组中有一个数只出现了一次,请你找到它。要求是具有线性的时间复杂度。二、题解2.1、HashMap用HashMap遍历数组,对每个数字记录他们出现的次数,并且放进map中,最后遍历map,找出value为1的数字就是答案。 //1、HashMap public int singleNumber(int[] nums) { Map<Integer,原创 2021-08-28 21:34:46 · 806 阅读 · 6 评论 -
k个一组翻转链表 哔哩哔哩2020校园招聘笔试题/LeetCode_25(困难)讲解
目录标题一、题目信息二、解题思路三、代码实现一、题目信息LeetCode版本牛客网版本下面我以牛客网为例写代码题目需要先输入一组数字代表链表的值,以#代表结尾。下一行输入K代表每组个数问题来了,怎么翻转?假如有如下链表,且K=2.那就从链表的一号下标开始,到2号下标,在这个区间内进行组内翻转。如果元素不够K个时,就不进行翻转。二、解题思路将链表分为K组,每组组内进行翻转。每次翻转完后,更换翻转区间。其他细节放在代码注释中。三、代码实现class Main{原创 2021-09-09 15:54:16 · 641 阅读 · 31 评论 -
二叉树的层序遍历原理+LeetCode真题练习
二叉树的层序遍历层序遍历是继前序、中序、后序遍历之后的第二类遍历方式。一、 层序遍历假设二叉树根节点(root)所在层数为1,层序遍历就是从根节点出发,首先访问根节点,接着从左到右的访问第二层上的节点,接着是第三层,以此类推直到最后一个节点。就像图中一样,先从根节点A开始,接着访问第二层的B节点,从左至右,自上而下。文章目录二叉树的层序遍历一、 层序遍历假设二叉树根节点(root)所在层数为1,层序遍历就是从根节点出发,首先访问根节点,接着从左到右的访问第二层上的节点,接着是第三层,以.原创 2021-08-07 22:08:48 · 1297 阅读 · 4 评论 -
LeetCode 24:两两交换链表中的节点、1662. 检查两个字符串数组是否相等
每日一题 Day 2今天一道是单链表一道是String类的一:LeetCode 24:两两交换链表中的节点先来看一下题目信息索引题目意思就是把一个链表中的两两节点进行交换,题目给的例子是4个节点,是偶数个,两两节点进行交换,每个节点都有交换的点,那问题来了,万一给出的是奇数个呢?奇数个的话,只需要把最后一个需要注意的是题目要求我们不仅仅要改链表的val值,而是需要我们进行节点交换,意思就是换地址,换链表的箭头。在这里我拿题目给出的例子讲解。解法:递归递归虽然不太好想明白,但是递归的优原创 2021-05-27 21:29:02 · 677 阅读 · 5 评论
分享