
leetcode刷题
文章平均质量分 83
每一道题都会精心分析,提供解题过程
此生辽阔
这个作者很懒,什么都没留下…
展开
-
leetcode刷的一些杂题
1 9. 回文数就是这个数把最高位当做个位,第二高位当做百位,酱紫,求出来的数应该等于原来的数class Solution { public boolean isPalindrome(int x) { int sum=0; int k=1; int temp=x; int count=0; Stack<Integer>stack=new Stack(); while(x!=0) {原创 2021-10-31 22:05:15 · 359 阅读 · 0 评论 -
leetcode 14天刷题计划-高效面试备战
总结2021.08.11 第1 天 求和问题1 1 两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。思路:遍历数组,将遍历过的元素入Map,然后比那里的过程中看map中是否有target-nums[i]class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer,Intege原创 2021-10-31 22:04:11 · 741 阅读 · 0 评论 -
剑指offer|| 专项突击版 40天刷题计划(第21-40天)
2021.08.26 第21天前缀树62 剑指 Offer II 062. 实现前缀树2021.08.28 第23天 二分查找68 剑指 Offer II 068. 查找插入位置给定一个排序的整数数组 nums 和一个整数目标值 target ,请在数组中找到 target ,并返回其下标。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:原创 2021-10-31 22:03:13 · 529 阅读 · 0 评论 -
剑指offer|| 专项突击版 40天刷题计划(第1-20天)
刷题地址:https://leetcode-cn.com/study-plan/lcof/?progress=xcewnbs文章目录总结2021.08.06 第 1 天 整数[1 剑指 Offer II 001. 整数除法](https://leetcode-cn.com/problems/xoh6Oh/)[2 剑指 Offer II 002. 二进制加法](https://leetcode-cn.com/problems/JFETK5/)[3 剑指 Offer II 003. 前 n 个数字二进制中 1原创 2021-10-31 22:01:05 · 495 阅读 · 0 评论 -
leetcode 22. 括号生成
题目描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。有效括号组合需满足:左括号必须以正确的顺序闭合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]提示:1 <= n <= 8解题思路要生成有效的括号组合,首先,要把2*n个左右括号都用完然后,每在字符串后面添加一个括号的时候,其前面的右括原创 2021-08-18 09:36:52 · 1607 阅读 · 5 评论 -
leetcode 130. 被围绕的区域(DFS,BFS)
给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。思路1 遍历所有的O四个边界上的0直接跳过,因为无需做修改其他地方的O,取决于上下左右四个方向能否到达边界上的O,我们用一个list存放在一次深搜过程中遍历到的坐标,如果最终这次深搜的结果是可以到达边界,那么这些坐标上的O都不用修改,我们用一个visited数组记录这些坐标的状态,solve函数中的for循环下次遍历到这些O点就会直接跳过如原创 2021-08-16 10:05:53 · 967 阅读 · 2 评论 -
leetcode 14天刷题计划-算法入门(共计31题)
2021.08.03(第1 天)二分查找细节详解,顺便赋诗一首寻找一个数、寻找左侧边界、寻找右侧边界。而且,我们就是要深入细节,比如不等号是否应该带等号,mid 是否应该加一等等。分析这些细节的差异以及出现这些差异的原因,保证你能灵活准确地写出正确的二分查找算法。寻找一个数时,用i<=j寻找区间时,用i<j1 704. 二分查找class Solution { public int search(int[] nums, int target) { int原创 2021-08-16 09:11:21 · 1183 阅读 · 10 评论 -
leetcode 542. 01 矩阵(Java DFS+BFS+DP)
于是我根据错误的例子,进行调试,错误的例子太复杂了,我截取了一部分[[0,0,1,1,1],[0,1,1,1,1],[0,1,1,1,1]]这是不加buffer[i][j]=Integer.MAX_VALUE; 的执行结果这是加上之后的执行结果原创 2021-08-11 15:40:38 · 1019 阅读 · 6 评论 -
leetcode 14天刷题计划-数据结构入门(共计33题)
知识点总结set判断元素是否存在 set.contains();2021.07.28(第1天)1 217 存在重复的元素class Solution { public boolean containsDuplicate(int[] nums) { Set<Integer>set=new HashSet(); for(int i=0;i<nums.length;i++) { if(set.contains(nu原创 2021-08-10 12:47:45 · 1225 阅读 · 5 评论 -
力扣动态规划入门21天刷题计划(共计46题)
2021.07.131 509. 斐波那契数class Solution { public int fib(int n) { int dp[]=new int[n+1]; dp[0]=0; if(n<1) return dp[0]; dp[1]=1; for(int i=2;i<n+1;i++) { dp[i]=dp[i-1]+dp[i-2];原创 2021-08-02 22:30:19 · 2670 阅读 · 10 评论 -
114. 二叉树展开为链表
题目描述给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。代码1注意下面这个代码是从下往上处理的class Solution { // 定义:将以 root 为根的树拉平为链表 public void flatten(TreeNode root) { // base case if (原创 2021-07-08 22:35:01 · 110 阅读 · 0 评论 -
116. 填充每个节点的下一个右侧节点指针
题目描述给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈原创 2021-07-08 21:52:24 · 175 阅读 · 1 评论 -
leetcode 7. 整数反转
题目描述给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0提示:-231 <= x <= 231 - 1来源原创 2021-04-17 19:23:15 · 172 阅读 · 0 评论 -
leetcode 300. 最长递增子序列
题目描述给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3]输出:4示例 3:输入:nums = [7,7,原创 2021-04-10 21:56:24 · 274 阅读 · 0 评论 -
leetcode 322. 零钱兑换
题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。示例 1:输入:coins = [1, 2, 5], amount = 11输出:3解释:11 = 5 + 5 + 1示例 2:输入:coins = [2], amount = 3输出:-1示例 3:输入:coins = [1], amount = 0输出:0示例 4原创 2021-04-10 21:52:58 · 170 阅读 · 0 评论 -
leetcode 144. 二叉树的前序遍历
题目描述给你二叉树的根节点 root ,返回它节点值的 前序 遍历。1:递归思路分析代码展示class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res=new ArrayList<>(); preOrder( root,res); return res; }原创 2021-03-30 15:00:58 · 293 阅读 · 0 评论 -
leetcode 160. 相交链表
题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:1:双指针解题思路先求得两个链表的长度差,假设长度差为2,那就让比较长的链表的头结点先走2个节点,然后两条链表的头结点一起走,他们会同时走到相交节点。代码展示public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { if (headA == null || headB原创 2021-03-28 22:46:27 · 97 阅读 · 0 评论 -
leetcode 141. 环形链表
题目描述给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?提示:链表中节点的数目范围是 [0, 104]原创 2021-03-28 17:44:42 · 172 阅读 · 0 评论 -
leetcode206/剑指 Offer 24. 反转链表
题目描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。1;容器法先存放进一个ArrayL原创 2021-03-28 15:55:40 · 229 阅读 · 0 评论 -
leetcode5. 最长回文子串
s.charAt(i)每次都会检查数组下标是否越界,所以最好先转化成字符数组 char[]arr=s.toCharArray方法1:暴力解法:就是暴力枚举,每截取到一个字符串就利用回文串判断函数(自己写的)来判断是不是回文串,并记录长度,输出最长的一个就好了 s.subString用起来呀暴力解法在两个for循环中还做了遍历,因此,时间复杂度是O(n3)方法2:枚举所有子串的可能的中心位置中心扩散法:从中间位置开始,向两边扩散,直到不能匹配需要分奇数长度和偶数长度,因为中心位置可能是一个字符原创 2021-03-27 22:08:07 · 2478 阅读 · 0 评论 -
leetcode 3. 无重复字符的最长子串
通常字符串散列表都是用字符作为键,出现的次数作为值构造子串,需要下标的信息,涉及子串,往往需要滑动窗口来动态扩张收缩子串原创 2021-03-24 10:28:12 · 357 阅读 · 0 评论 -
leetcode 2. 两数相加
题目描述给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-two-numbers著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。输入:l1 = [2,4,3], l2 = [5,6,4]原创 2021-03-23 11:40:30 · 757 阅读 · 0 评论 -
leetcode 1. 两数之和
题目描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题思路一:暴力遍历,就是从数组第一个元素开始遍历,看它后面的元素原创 2021-03-23 00:11:44 · 115 阅读 · 0 评论