
力扣周结
文章平均质量分 82
刷力扣记录
存量美团骑手
在追求优秀的路上了
展开
-
我要打败动态规划——编辑距离
392. 判断子序列1.题目给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶:如果有大量输入的 S,称作 S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?示例 1:输入:s = "abc", t = "ahbgdc"输出:true原创 2022-01-29 10:13:01 · 707 阅读 · 14 评论 -
我要打败动态规划——回文串怎么搞?
动态规划一直是面试中的经典难题,所见体型常规的有:0-1背包,完全背包,打家劫舍,股票问题,编辑距离,回文串。后续的一段时间会对动态规划专题做出总结。647. 回文子串1.题目给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。回文字符串 是正着读和倒过来读一样的字符串。子字符串 是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:s = "abc"输出:3解释:三个回文子串: "a", "原创 2022-01-28 10:43:27 · 1010 阅读 · 13 评论 -
剑指 Offer 66. 构建乘积数组【java详细题解】
剑指 Offer 66. 构建乘积数组1. 题目 给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。示例:输入: [1,2,3,4,5]输出: [120,60,40,30,24]提示:所有元素乘积之和不会溢出 32 位整数a.length <= 1000002. 思路遍历一遍内原创 2022-01-24 11:36:06 · 327 阅读 · 17 评论 -
剑指 Offer 41. 数据流中的中位数【java详细题解】
剑指 Offer 41. 数据流中的中位数1.题目如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返原创 2022-01-22 21:56:23 · 246 阅读 · 4 评论 -
剑指 Offer 36. 二叉搜索树与双向链表【java详细题解】
剑指 Offer 36. 二叉搜索树与双向链表1.题目输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。特别地,我们希望可以就地原创 2022-01-21 11:16:55 · 152 阅读 · 8 评论 -
剑指 Offer 45. 把数组排成最小的数 【java详细题解】
剑指 Offer 45. 把数组排成最小的数1. 题目输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: "102"示例 2:输入: [3,30,34,5,9]输出: "3033459"提示:0 < nums.length <= 100说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 02.思路这是一道排序题,原创 2022-01-21 10:03:18 · 293 阅读 · 11 评论 -
剑指 Offer 53 - I. 在排序数组中查找数字 I 【java详细题解】
剑指 Offer 53 - I. 在排序数组中查找数字 I题目统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0提示:0 <= nums.length <= 105-109 <= nums[i] <= 109nums 是一个非递减数组-109 <= target <=原创 2022-01-19 08:27:55 · 375 阅读 · 19 评论 -
力扣周结07——贪心
455. 分发饼干解题思路贪心是从局部最优解出发得到全局最优解,贪心的题目的出发都是解出局部最优然后试着推出全局最优解且没有反例(这里其实是数学的思想,数学归纳法啥的,我也不太会),然后就可以按照贪心策略解题了,本题中对于大胃口的孩子我们喂大饼干就可以满足全局最优解核心代码class Solution { public int findContentChildren(int[] g, int[] s) { Arrays.sort(g); Arrays.sort原创 2021-12-21 10:13:13 · 241 阅读 · 28 评论 -
力扣周结06
力扣周结如期而至,本周开刷了贪心模块,贪心没有套路这五个字属实有点把我折磨的不轻,先将回溯模块整理一下77. 组合解题思路回溯三部曲递归函数的返回值以及参数并不需要对返回节点进行操作我们只是需要将符合条件的放到结果集中即可回溯函数终止条件终止条件就是path集合达到k就可以将节点回收单层的搜索逻辑剪枝优化回溯法是一种暴力检索方式,只能对其进行剪枝优化,对于本题的剪枝操作如果n = 4,k = 4的话,那么第一层for循环的时候,从元素2开始的遍历都没有意义了。 在第二层.原创 2021-12-13 12:07:48 · 423 阅读 · 32 评论 -
力扣周结05
本周的力扣周结我并没有刷很多的题,回溯模块最近才开始刷,先把树巩固好700. 二叉搜索树中的搜索解题思路利用二叉搜索树的性质去寻找指定值的结点(假设树中结点没有重复元素),二叉搜索树中根节点的左孩子一定小于其根节点,根节点的右孩子一定大于其根节点,因为我们需要返回指定的子树所以,我们递归函数的返回值不为空核心代码class Solution { public TreeNode searchBST(TreeNode root, int val) { //递归结束的标志是找.原创 2021-12-06 10:10:18 · 1346 阅读 · 47 评论 -
力扣周结04——一入递归深似海
坚持打卡的感觉很棒!!收获满满每天都有必须早起的使命感!!十一月份也快结束了,我的力扣之旅也只是出现了一天的缺勤,希望下个月继续努力,一直坚持!!学会二叉树的递归遍历吊打这些题前序遍历递归public static void beforeSearch(Node node) { if (node != null) { System.out.print(node.value + " "); beforeSearch(node.leftNode);原创 2021-11-29 09:13:20 · 387 阅读 · 24 评论 -
力扣周结03
242. 有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false提示:1 <= s.length, t.length <= 5 * 104s 和 t 仅包含小写字母解题思路数原创 2021-11-22 09:37:46 · 4629 阅读 · 24 评论 -
力扣周结02
跟着卡哥的刷题路线,本周的力扣周结没有迟到!本周完成了链表模块和部分哈希表模块,我这里将链表模块总结出来,因为总结的目的在于对旧知识点的回顾。哈希表最近几天才刷203. 移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[.原创 2021-11-15 10:09:37 · 321 阅读 · 22 评论 -
力扣周结01
跟着卡哥的刷题路线,为了巩固知识点,一周做一次力扣刷题总结,每道题我都会将原题写出来,写出我的解题思路,核心代码,时间复杂度和空间复杂度,如果有错误的地方也欢迎大家指正本周小节本周做完了数组模块的训练,收获满满。704.二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: .原创 2021-11-11 14:12:26 · 512 阅读 · 7 评论