力扣刷题
文章平均质量分 54
小林嘞
这个作者很懒,什么都没留下…
展开
-
滑动窗口例题
滑动窗口,可以用来解决一些查找满足一定条件的连续区间的性质(长度等)的问题。由于区间连续,因此当区间发生变化时,可以通过旧有的计算结果对搜索空间进行剪枝,这样便减少了重复计算,降低了时间复杂度。往往类似于“请找到满足xx的最x的区间(子串、子数组)的xx”这类问题都可以使用该方法进行解决。原创 2023-08-01 09:39:47 · 334 阅读 · 0 评论 -
多源bfs
一些细节:实现上为了方便,在进行常规 BFS 时,如果一个「海洋」区域被访问到,说明其被离它「最近的陆地」覆盖到了,修改值为最小距离。我们可以将「源点/起点」和「汇点/终点」进行反转:从每个「陆地」区域出发,多个「陆地」区域每次同时向往扩散一圈,每个「海洋」区域被首次覆盖时所对应的圈数,就是「海洋」区域距离最近的「陆地」区域的距离。与「单源最短路」不同,「多源最短路」问题是求从「多个源点」到达「一个/多个汇点」的最短路径。并且通过建立「虚拟源点」的方式,我们可以「多源 BFS」转换回「单源 BFS」问题。原创 2023-07-31 21:06:42 · 442 阅读 · 0 评论 -
图论问题集合
【综合笔试题】难度 3/5,为啥是图论不是 DP,两者是什么关系?原创 2023-03-28 15:54:41 · 194 阅读 · 0 评论 -
力扣刷题小技巧
2.3 根据数据规模,判断我们的朴素算法计算机是否可以在 1s 内处理完②,即判断运算次数是否在 以内③。例如本题使用双指针算法,指针移动和判断大小算一次运行,由于数据只有 2000,距离 还很远,所以完全足够了。在机试或者周赛中,遇到一些是从文字上限制我们的题目,例如本题限制我们使用 算法。例如本题很容易就想到直接使用双指针找第 k 个小的数,复杂度为。在机试或者周赛中,目的是尽可能快的 AC,所以 Java 可以直接不写。的修饰符(不写代表使用默认的包权限),这没有问题,不用纠结。原创 2023-03-28 10:44:27 · 236 阅读 · 0 评论 -
最长递增子序列
是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。,找到其中最长严格递增子序列的长度。原创 2023-03-22 09:27:14 · 67 阅读 · 0 评论 -
【无标题】
给定一些同学的信息(名字,成绩)序列,请你将他们的信息按照成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。例示:从高到低 成绩从低到高注:0代表从高到低,1代表从低到高输入描述:第一行输入要排序的人的个数n,第二行输入一个整数表示排序的方式,之后n行分别输入他们的名字和成绩,以一个空格隔开。原创 2023-03-20 15:54:56 · 285 阅读 · 0 评论 -
适合dfs而不适合dp的情况
HJ93 数组分组 牛客输入int型数组,询问该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),不是5的倍数也不是3的倍数能放在任意一组,可以将数组分为空数组,能满足以上条件,输出true;不满足时输出false。原创 2023-03-19 15:44:17 · 268 阅读 · 0 评论 -
java参考桶排序思路
按照桶排序思路进行预处理:保证 1 出现在 nums[0] 的位置上,2 出现在 nums[1] 的位置上,…,n 出现在 nums[n - 1] 的位置上。例如样例中 [4,3,2,7,8,2,3,1] 将会被预处理成 [1,2,3,4,3,2,7,8]。中的数字,并以数组的形式返回结果。448. 找到所有数组中消失的数字。原创 2023-03-13 15:01:47 · 64 阅读 · 0 评论 -
三种方法解决区间问题
1004. 最大连续1的个数 III提示中等517相关企业给定一个二进制数组nums和一个整数k,如果可以翻转最多k个0,则返回数组中连续1的最大个数。6,1,1,1,1,粗体数字从 0 翻转到 1,最长的子数组长度为 6。10[0,0,1,1,,1,1,1,粗体数字从 0 翻转到 1,最长的子数组长度为 10。原创 2023-03-13 14:40:45 · 459 阅读 · 0 评论 -
前缀和模板
【代码】前缀和模板。原创 2023-03-12 16:59:24 · 231 阅读 · 2 评论 -
快速乘法模板
当不能使用乘法和除法的时候,可以使用位移的形式进行快速乘法,使用的是倍增思想。原创 2023-03-12 14:52:08 · 91 阅读 · 0 评论 -
二分查找的mid值确定以及check函数的确定
二分查找的mid值确定以及check函数的确定原创 2023-03-08 09:37:11 · 1764 阅读 · 0 评论 -
搜索旋转排序数组
搜索旋转排序数组原创 2023-03-08 08:35:35 · 93 阅读 · 0 评论 -
混合背包问题
混合背包原创 2023-03-05 20:26:10 · 242 阅读 · 0 评论 -
完全背包总结
完全背包总结原创 2023-03-05 20:21:30 · 65 阅读 · 0 评论 -
多重背包问题中的二进制状态压缩
多重背包问题中的二进制状态压缩原创 2023-03-05 20:15:17 · 349 阅读 · 0 评论 -
记忆化递归(dp)
记忆化递归(dp)原创 2023-02-23 21:00:34 · 60 阅读 · 0 评论 -
直方图最大矩形面积
力扣刷题单调栈原创 2022-12-19 09:39:35 · 78 阅读 · 0 评论 -
前缀和学习笔记
前缀和原创 2022-12-01 10:11:02 · 230 阅读 · 0 评论 -
整数除法不用除号
java的int范围,-2 ^ 31,2 ^ 31−1,所以负数转整数会存在越界问题(负数比正数的范围大1),同时要注意,如果a,b一正一负,那么结果要取反。4.直到除数下一次翻倍的时候大于被除数,则被除数减掉此时的除数(剪完的结果是大于零的),将倍数累加到re中,结束当前轮次的循环.思路:不断寻找当前最大的可被减掉但是被除数剪完不会小于零的数,这个搜索过程类似二分法.不用abs函数的原因也在于如果a = -2 ^ 31,abs会报错的。本题思路其实很简单,就是用减法代替除法.主要优化在减数的选择上.原创 2022-11-27 19:37:39 · 324 阅读 · 0 评论 -
完全背包问题
完全背包问题原创 2022-10-22 15:25:07 · 68 阅读 · 0 评论 -
0/1背包问题之目标和
组合问题原创 2022-10-17 23:49:15 · 68 阅读 · 0 评论 -
01背包问题的简单理解
01背包问题原创 2022-10-15 17:10:39 · 222 阅读 · 0 评论 -
回溯法总结
回溯法总结原创 2022-10-07 10:06:28 · 546 阅读 · 0 评论 -
拓扑序列的构建
拓扑排序原创 2022-07-24 10:22:46 · 135 阅读 · 0 评论 -
873. 最长的斐波那契子序列的长度
873. 最长的斐波那契子序列的长度https://leetcode.cn/problems/length-of-longest-fibonacci-subsequence/经典的dp题目,解题时主要遇到的问题在于不会定义dp数组(dp table)以及下标的含义,上来就想着定义一维的dp数组,但是问题很明显是行不通的,初始想法是对于不断遍历到的新的数字,在已有的数字中寻找是否有加和正好是的组合,但是明显是会超时的.使用二维数组的思路如下:dp[i][j]代表以arr[i]结尾,arr[j]为倒数第二个字母原创 2022-07-09 20:01:23 · 109 阅读 · 0 评论 -
前缀树(Trie)
实现 Trie (前缀树)https://leetcode.cn/problems/implement-trie-prefix-tree/如下图所示:前缀树是一颗将公共前缀放在同一条路径上的数据结构,其中以结点表示字符,同时在结点内部增设一个标志变量,表示是否有字符串使用该结点作为结尾.每个结点有26个指针,分别指向26个字母. 使用树的形式实现:......原创 2022-07-07 17:01:16 · 105 阅读 · 0 评论 -
241. 为运算表达式设计优先级
241. 为运算表达式设计优先级https://leetcode.cn/problems/different-ways-to-add-parentheses/给你一个由数字和运算符组成的字符串 expression ,按不同优先级组合数字和运算符,计算并返回所有可能组合的结果。你可以 按任意顺序 返回答案。生成的测试用例满足其对应输出值符合 32 位整数范围,不同结果的数量不超过 104 。输入:expression = "2*3-4*5"输出:[-34,-14,-10,-10,10]解释:(2*(3原创 2022-07-01 16:37:17 · 160 阅读 · 0 评论 -
摆动排序 II
324. 摆动排序 IIhttps://leetcode.cn/problems/wiggle-sort-ii/给你一个整数数组 ,将它重新排列成 的顺序。输入:nums = [1,5,1,1,6,4]输出:[1,6,1,5,1,4]解释:[1,4,1,5,1,6] 同样是符合题目要求的结果,可以被判题程序接受。将原始数组进行排序,然后拆分为两个等长(原数组长度为偶数)或者长度差一(小的那一部分多一个)的数组.而后进行穿插排序.对于数组[1, 5, 2, 4, 3],我们将其排序,得到[1, 2, 3原创 2022-06-29 08:27:23 · 89 阅读 · 0 评论 -
判断子序列的三种方法
判断子序列的三种方法及推广原创 2022-06-15 08:35:49 · 2287 阅读 · 0 评论 -
对角线遍历矩阵
蛇形遍历矩阵对角线原创 2022-06-14 15:00:33 · 478 阅读 · 0 评论 -
python二维数组创建的坑
python二维数组的创建原创 2022-06-11 09:03:40 · 129 阅读 · 0 评论 -
蓄水池抽样与带面积的蓄水池抽样
蓄水池算法原创 2022-06-09 09:48:25 · 73 阅读 · 0 评论 -
二分法的两到例题(Python, Java)
两到二分查找的力扣题解原创 2022-06-07 19:11:26 · 142 阅读 · 0 评论 -
我的日程安排系列问题(区间重叠问题)
我的日程安排系列问题(区间重叠问题的三种变体)原创 2022-06-07 09:07:00 · 573 阅读 · 0 评论 -
回溯法-修改传入的nums数组
回溯法(修改传入值)原创 2022-04-11 14:41:37 · 64 阅读 · 0 评论 -
二叉树的层次遍历变体
从右侧观察二叉树的层次遍历解法原创 2022-04-06 14:52:02 · 388 阅读 · 0 评论 -
带有随机指针的链表的深拷贝 (python)
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。原题链接力扣解法1 字典(hashmap):通过使用python的字典来进行赋值.即将原结点作为key,将新节点作为value的形式来复制.这样构建了一个字典之后,按照原链表的next指针和random指针来进行搜索.类似于抄作业,先抄题目,然后再抄答案."""# Definition for a原创 2022-02-27 10:52:41 · 129 阅读 · 0 评论 -
单调栈,单调队列
题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top(); --> 返回 0原创 2022-02-27 10:25:40 · 185 阅读 · 0 评论 -
逆置链表(python)
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL链表的数据结构定义# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next原创 2022-02-26 17:46:43 · 741 阅读 · 0 评论