力扣题解
文章平均质量分 80
记录了博主刷题经历
JLU_LYM
来自JLU,19级应届生,性别男,爱好女,乐意健身写代码
展开
-
力扣342. 4的幂+1. 两数之和
第一百一十五天 --- 力扣342. 4的幂+1. 两数之和题目一思路:模拟细节代码题目二思路:位运算代码题目一力扣:1. 两数之和思路:模拟1、target是由两个数构成的并且两个数是唯一的答案,我枚举数组中任意一个数之后,只要余下的数出现在了数组里面,就意味着我找到答案了。2、怎么快速的知道要的数到底在不在,用Hash表存上就行,因为答案要的是出现的位置,所以用unordered_map存储,key是数组中的值,value是位置。细节1、要的是数组中两个不同位置上的数,所以需要判断位原创 2021-12-25 16:05:41 · 596 阅读 · 0 评论 -
力扣371. 两整数之和+2. 两数相加
第一百一十四天 --- 力扣371. 两整数之和+2. 两数相加题目一思路:位运算细节代码题目二思路:直接模拟细节错误想法代码题目一力扣:371. 两整数之和思路:位运算1、因为我们不能够使用任何±有关的东西,所以相关函数等等都被禁止使用,所以只能够通过位运算来达成目的。2、位运算只有两个数 0 1 ,那么01之间的运算法则如下:0+0=01+0=10+1=11+1=0(并且进位)通过以上我们不难发现,其实加法就是两个数按位取异或。3、但是,1+1的时候会存在进位,所以只把两个原创 2021-12-25 14:51:53 · 793 阅读 · 0 评论 -
力扣236. 二叉树的最近公共祖先+2096. 从二叉树一个节点到另一个节点每一步的方向
第一百一十三天 --- 力扣236. 二叉树的最近公共祖先+2096. 从二叉树一个节点到另一个节点每一步的方向题目一思路:直接模拟代码题目二思路(回溯法)细节代码私人小灶题目一力扣:236. 二叉树的最近公共祖先思路:直接模拟本题是作为我的复习题目,详细题解见:第七天 — 求任意两个节点的公共祖先。1、其实呀,这个问题很简单,在找公共祖先的时候我们得先找到我们自己,并且是找祖先,所以找到自己之后就可以返回了。2、如果我左右都找到了目标,由于二叉树遍历的机制,一定是最近的第一次找到,所以答原创 2021-12-07 10:41:05 · 534 阅读 · 1 评论 -
第 270 场力扣周赛
第一百一十二天 --- 第 270 场力扣周赛题目一思路:直接模拟细节代码附加题目二思路细节代码题目一力扣:2094. 找出 3 位偶数思路:直接模拟1、因为构造所有三位数,所以三次枚举出所有给定数组中的所有数,并保证:<1> 整数为偶数<2> 整数不包含前导零,也就是枚举第一位的时候,要枚举非零数。<3> 三个整数位对应的数组下标不能重复细节为了防止重复枚举,需要一个Hash表来记录已经枚举过的数,防止重复枚举。代码class Solutio原创 2021-12-07 09:28:54 · 421 阅读 · 0 评论 -
力扣231. 2 的幂+268. 丢失的数字
第一百一十一天 --- 力扣231. 2 的幂+268. 丢失的数字题目一思路细节代码题目二思路代码题目一力扣:231. 2 的幂思路可以自己拿笔写一下,不难发现,所有2的幂次的二进制表示中,都有且只有一个1,所以直接n&(n-1)如果==0,那么就是答案。细节0 以及 -2147483648需要单独判断。代码class Solution {public: bool isPowerOfTwo(int n) { if (n == 0) {//边界条件 return原创 2021-12-03 11:23:29 · 309 阅读 · 0 评论 -
力扣338. 比特位计数
第一百一十天 --- 力扣338. 比特位计数题目一思路常规进阶(DP)最低设置位最高有效位最低有效位代码常规进阶题目一力扣:338. 比特位计数思路常规对1到n每个数求一下他们中有多少个1即可,这种思路属于直接模拟。时间复杂度较高 : O(nlgn)。进阶(DP)我们自己写一些数,观察二进制位变化可得知,这些东西是有规律的,如果每次都重新计算,会造成大量重复计算,所以我们要观察好,利用已知的一些规律,用已经计算过的,来推出新的数的结果,所以想到了DP。最低设置位我们现在处理到了第原创 2021-12-03 11:05:00 · 294 阅读 · 0 评论 -
力扣190. 颠倒二进制位+191. 位1的个数
第一百零九天 --- 力扣190. 颠倒二进制位+191. 位1的个数题目一思路常规细节进阶(分治法)代码常规进阶题目二思路常规进阶代码常规进阶题目一力扣:190. 颠倒二进制位思路常规1、所谓颠倒,就是把原来的最右面的位数放在最左面2、所以我们对原串,每次都 &1 取出最右面的位,再 | 进入答案即可3、每次答案<<,原数>>即可。细节一定要注意,答案,应该先移位,流出地方,再进行 | 运算。进阶(分治法)1、我们想,所谓的整体颠倒,我们把32长原创 2021-12-01 16:10:22 · 603 阅读 · 0 评论 -
力扣400. 第 N 位数字
第一百零八天 --- 力扣400. 第 N 位数字题目一思路代码题目一力扣:400. 第 N 位数字思路1、首先就要读懂题意,这样理解,就相当于吧从1到2^31-1所有数放在一个超长的字符串中,n就相当于读取这个字符串第n位是哪个数字,也就是说答案只可能是0到9中的一个。2、总体计算思路:<1> 通过n的范围先计算出n对应的是个几位数。<2> 对n重整,减去之前那些位数占用的序号数。<3> n/(位数) 得到该数在自己这个大范围内排名<4>原创 2021-12-01 15:39:50 · 705 阅读 · 0 评论 -
力扣第 66 场双周赛
第一百零七天 --- 力扣第 66 场双周赛题目一思路代码题目二思路:贪心法代码题目三思路代码题目一力扣:2087. 网格图中机器人回家的最小代价思路拿到题目,一定先读好题!!!!!总结一下:这就是到TM的脑筋急转弯。。。。1、乍一看,和我们平时的机器人走路问题,很相似,一定要仔细读题呀!2、他的代价计算规则是,走到第i行,花费rowCosts[i],一次只能走一步。那么我从当前行列直接不绕路的走到目的地,经过的行列,就是固定的3、如果我们不那样直达,而采取非直达,上述花费一定少不了,原创 2021-11-29 16:10:52 · 484 阅读 · 0 评论 -
力扣第 269 场周赛<前三题>
第一百零六天 --- 力扣第 269 场周赛<前三题>题目一思路代码题目二思路代码题目三思路代码题目一力扣:2091. 从数组中移除最大值和最小值思路其实吧,我们做题,一定要读好题,分析好题意,其实很多时候,题目本身毫无难度,就是个脑筋急转弯罢了。!!!!!!!!!!1、说回本题,只能从头或尾删除元素,那么就3种情况,全从头删除,全从尾删除,从两边删除,就完了,三种情况找最小值就得了。2、唯一需要注意的是在计算步数的时候别算错了。代码class Solution {pub原创 2021-11-29 15:39:14 · 397 阅读 · 0 评论 -
力扣第 269 场周赛-5941. 找出知晓秘密的所有专家
第一百零五天 --- 力扣第 269 场周赛-5941. 找出知晓秘密的所有专家题目一思路为什么使用并查集算法过程代码题目一力扣:5941. 找出知晓秘密的所有专家思路为什么使用并查集1、开始,专家0和firstPerson都知道了秘密,随着会议的进行,更多的人知道了秘密,比如专家3和专家0开了一次会,专家3就知道了秘密,和他们是同属一个集合了,最终要被发现的,所以这种集合的合并问题,经典的并查集问题。2、详细的并查集操作封装解析见:力扣684冗余连接算法过程1、一定要注意读题,同原创 2021-11-29 15:19:54 · 231 阅读 · 0 评论 -
力扣137. 只出现一次的数字 II+260. 只出现一次的数字 III
第一百零四天 --- 力扣137. 只出现一次的数字 II+260. 只出现一次的数字 III题目一思路Hash算法位运算(遍历统计)自动机解法代码1、Hash2、位运算3、自动机题目一力扣:137. 只出现一次的数字 II思路Hash算法我们什么都不考虑,直接统计各个数字出现次数,然后找出现一次的,用哈希表实现,最基础,也最好想。位运算(遍历统计)那么,我们现在有了一个新的需求,由于某种原因,现在空间严重不足,让我们在O(1)的空间中,算出来,所以我们想到了位运算。1、因为大部分出现了原创 2021-11-26 21:16:37 · 344 阅读 · 0 评论 -
力扣423. 从英文中重建数字
第一百零三天 --- 力扣423. 从英文中重建数字题目一思路:直接模拟代码题目一力扣:423. 从英文中重建数字思路:直接模拟1、给了一个固定的字符串,最大长度是10万,我们不能一遍又一遍的访问,并且组成元素也很单一,就那么几个,所以做一个预处理,把所有出现过的字符进行次数统计即可。2、zero代表0,他有个元素z是1-9中任何一个数字的英文单词中不包含的,所以z的个数就代表了0的个数3、有了上面的思路作为基础,我们不难想到:<1> 我们可以通过某一个特殊字母出现的个数来判断原创 2021-11-26 19:43:12 · 364 阅读 · 0 评论 -
力扣第 268 场力扣周赛
第一百零二天 --- 力扣第 268 场力扣周赛题目一思路通过上一个回文数推下一个回文数进制转化回文数比较细节代码题目二思路记忆化处理记录位置+二分查找优化查询过程细节代码题目三思路代码题目四思路代码题目一力扣:2081. k 镜像数字的和思路1、这个题目很简单,就是拿出一个数,首先是十进制回文数,将之转化成为K进制之后,也是回文的,那么这个二进制数就是答案之一,这个题的思路就是这样。2、但是,我们不能硬枚举从1开始的所有十进制数,这样一定会超时,因为你看样例,可能的十进制数会非常大,所以原创 2021-11-22 21:30:26 · 324 阅读 · 0 评论 -
力扣318. 8. 字符串转换整数
第一百零一天 --- 力扣318. 8. 字符串转换整数题目一思路细节代码题目一力扣:8. 字符串转换整数 (atoi)思路直接按照题意模拟就行细节这个题不难,就是有一堆细节1、两个边界处要用long long 才稳妥,直接给值,否则会被认定为int代码class Solution {public: int myAtoi(string s) { long long num1 = 2147483647;//正数边界,直接给值,不要计算,计算出来的默认是int long原创 2021-11-18 20:39:21 · 121 阅读 · 0 评论 -
力扣318. 最大单词长度乘积
第一百天 --- 力扣318. 最大单词长度乘积题目一思路模拟法(暴力解法)二:位运算法代码一二附题目一力扣:318. 最大单词长度乘积思路我们需要在一个一维数组中找到任意两个目标串,进行长度乘积,避免不了是O(N^2)的寻找,我们能做的是,在每次进行比较的时候,保证O(1)内求出答案,并且对搜素过程进行剪枝,比如将之缩减比较次数,或者用一些比如贪心的思想减少比较次数。模拟法(暴力解法)直接模拟题意,每次比较先把一个字符串存进set中,遍历另一个串,看有没有重复字符。二:位运算法1、根原创 2021-11-18 20:18:08 · 358 阅读 · 0 评论 -
力扣140. 单词拆分 II
第九十八天 --- 力扣140. 单词拆分 II题目一思路一:不含“记忆化”优化的回溯细节:二:“记忆化”优化回溯为什么要优化?过程细节代码题目一力扣:140. 单词拆分 II思路1、这很明显,是一种维护出所有符合要求的路径的问题,这种问题在大方向上一定要明确,首选就是——————>“回溯法”2、我们分两种方法介绍,第二种是优化版本,建议使用第二种方法。一:不含“记忆化”优化的回溯1、这个算法的核心思想就是,自己干自己的,每个分支我都单独给你一个维护的串,等维护到最后符合要求者直接原创 2021-11-18 19:22:53 · 486 阅读 · 0 评论 -
力扣第 267 场周赛
第九十八天 --- 力扣第 267 场周赛题目一思路:直接模拟代码题目二思路:直接模拟题意代码题目三思路代码题目一力扣:2076. 处理含限制条件的好友请求思路:直接模拟我们就直接模拟题意即可,我们只需要直接模拟一轮一轮买票过程,时刻检查目标人物剩余买票个数是否为0即可。代码class Solution {public: int timeRequiredToBuy(vector<int>& tickets, int k) { int ans = 0; int原创 2021-11-16 10:05:43 · 450 阅读 · 0 评论 -
力扣2076. 处理含限制条件的好友请求
第九十七天 --- 力扣2076. 处理含限制条件的好友请求题目一思路:并查集注意代码题目一力扣:2076. 处理含限制条件的好友请求思路:并查集1、我们先读题,最开始每个节点都没有朋友;每一个请求能够通过,那么可以建立直接联系;请求同意之前,同样还得看有没有直接不成为朋友,或者间接不成为朋友。这很明显连通分量问题,间接不能成朋友,就是;两个不能成为朋友的人在一个大的集体中。综上所述:明显的并查集!2、并查集具体操作见我的博客:力扣684冗余连接3、我们有了并查集之后,就按照好友请求的先后原创 2021-11-16 09:13:06 · 622 阅读 · 0 评论 -
力扣139. 单词拆分
第九十六天 --- 力扣139. 单词拆分题目一思路:动态规划确定DP算法状态初始值转移方程找答案代码错误思路:KMP+BFS题目一力扣:139. 单词拆分思路:动态规划1、首先,要看数据约定,s的长度最大300,而字典长度1000,所以我们在思考算法的时候,一定也要考虑数据量的问题,在切入问题的时候,一般要从数据量小的地方切入(也不一定,做题不要太死,得灵活),详细缘由见我下方分解。2、一定要认真读题,题中说的是只能通过在字母之间添加空格来分割,不能是从中间判断出来一个词在字典中,然后删除原创 2021-11-15 22:04:40 · 852 阅读 · 0 评论 -
力扣6. Z 字形变换
第九十五天 --- 力扣6. Z 字形变换题目一思路:直接模拟代码题目一力扣:6. Z 字形变换思路:直接模拟1、博主写这道题的时候,看题一小时,写题十分钟,这个题太TMD,抽象了,样例也没看懂。。。。。2、我们这道题只要看懂样例就能很简单的写出来。3、来解读一下样例的意思,我们按照这个顺序去读,就能读出原本的顺序,所以现在就相当于有一个numRows长度的数组,我们要按照顺序读取原本字符串,并按照上上面的顺序放进相应的数组下标中去,最后把数组中各个下标中存的string从左到右加在一起原创 2021-11-11 22:31:59 · 622 阅读 · 0 评论 -
力扣2054. 两个最好的不重叠活动
第九十四天 --- 力扣2054. 两个最好的不重叠活动题目一思路:排序重整代码正确版本超时版本(仅用于参考分析,千万不要用,这个复杂度太高)题目一力扣:2054. 两个最好的不重叠活动思路:排序重整1、正常而言,给我们一系列的活动,我们得将之至于时间数轴从前到后的分析,不能直接按照他给的乱序分析,所以这里就要用到排序重整的思路,我们要规定一种方法,能让我们从前到后的分析且不会违反题意。2、这个题我们就要求找两个活动,让其效益值最大化,那么我们完全可以这么想,我在一个活动开始,就代表着我选原创 2021-11-02 11:44:50 · 199 阅读 · 0 评论 -
力扣5900. 蜡烛之间的盘子+5898. 数组中第 K 个独一无二的字符串
第九十三天 --- 力扣5900. 蜡烛之间的盘子+5898. 数组中第 K 个独一无二的字符串题目一思路:前缀和+二分搜索第一步:前缀和预处理第二部:二分法找" | "位置代码题目二思路代码题目一力扣:5900. 蜡烛之间的盘子思路:前缀和+二分搜索1、我们经过读题之后,第一个事情就可以明确了,这其实就是一道,在给定区间内,计算*出现次数的题,也就是区间和,所以第一反应就是毋庸置疑的"前缀和"算法。2、但是,这个题还有别的要求,就是你不能什么样的 " * " 都给计数了,必须是在两个"原创 2021-11-01 20:29:19 · 135 阅读 · 0 评论 -
力扣第265场周赛
第九十二天 --- 力扣第265场周赛题目一思路BFS代码题目二思路代码题目三思路代码题目一力扣:5916. 转化数字的最小运算数思路1、其实基础思路读完题就应该马上想到:每次得到一个转换中间值x,他所有可能的操作就是,枚举nums中所有数,每个数之于x都有三种操作,+ - ^,所以枚举所有nums数据再操作三次最多得到3000个新的中间结果,然后再循环执行上述操作,这个就是总体解法。2、在比赛的时候,我直接想到了用DFS,但是仔细分析来,每个节点至多3000个子节点,也就是3000个子原创 2021-10-31 14:47:22 · 1348 阅读 · 0 评论 -
力扣797. 所有可能的路径
第九十一天 --- 力扣797. 所有可能的路径题目一思路BFSDFS:经典回溯思路代码BFSDFS题目一力扣:797. 所有可能的路径思路一道经典的图论从源点到汇点求路径问题1、读懂题目,他给的数据形式很简单,非常实用,总结一句话就是,gragh[0]存的就是第0个点直接和哪些点相连,很适合求路径使用。BFS1、提到BFS,我们第一反应就是用队列维护。2、但是平常的都是用队列维护一个个的点,这个题要求出所有的路径,问题变化了,我要求所有的源点到汇点的路径,我们发现单纯的用维护点的方原创 2021-10-29 22:25:02 · 194 阅读 · 0 评论 -
力扣1584. 连接所有点的最小费用
第八十八天 --- 力扣1584. 连接所有点的最小费用题目一思路Kruskal算法朴素Prim算法二叉堆优化Prim代码Kruskal算法朴素Prim算法堆优化PrimSum Up:题目一力扣:1631. 最小体力消耗路径思路将问题抽象化,有一个点集,一个边集,现在需求是从边集中拿出边,将点集连上,两点之间只能有一条边(连成简单图),求权值之和最小,这就是经典的生成树问题,要求权值最小,简称最小生成树。这里介绍三种写法:Prim、堆优化Prim、Kruskal算法,分别有着各自的适用范围。原创 2021-10-26 13:56:33 · 234 阅读 · 0 评论 -
力扣638. 大礼包(回溯法+剪枝优化)
第八十八天 --- 力扣638. 大礼包题目一思路:回溯法代码无剪枝的回溯剪枝优化Sum Up题目一力扣:力扣638. 大礼包思路:回溯法1、我们先不考虑礼包,直接去买东西,就是物品数量*物品价格,但是现在有优惠了,允许你买礼包。同一种礼包可一直买,也可以不同种礼包搭配。2、现在我们的需求在needs中存着,我有两种选择,直接购买,买一种礼包。<1>先算出直接买用多少钱。<2>在众多礼包中选择符合要求的一个礼包,因为很多礼包,就得遍历礼包集合。我买了这个礼包,减少原创 2021-10-24 15:55:11 · 533 阅读 · 1 评论 -
力扣778. 水位上升的泳池中游泳
第八十七天 --- 力扣1631. 最小体力消耗路径题目一思路最短路径解法并查集二分查找代码最短路径解法SPFA堆优化Dijkstra并查集二分查找题目一力扣:1631. 最小体力消耗路径思路1、一个网格,要让我们找到一个从(0,0)到(m-1,n-1)的路径,并且要求消耗体力值最低,这个问题我们就可以抽象成为图论问题(要在图上研究最短路径),每一个坐标都可以看作是一个点,每个点最多有4条无向边(不越界的话)。最短路径解法很显然,通过读一遍题目,很自然的就想到了这个是图论问题中的最短路径原创 2021-10-23 17:30:01 · 250 阅读 · 0 评论 -
力扣2045.-到达目的地的第二短时间
第八十六天 --- 力扣2045.-到达目的地的第二短时间题目一思路:SPFA(BFS)为什么选择SPFA实现代码(邻接表)题目一力扣:2045.-到达目的地的第二短时间思路:SPFA(BFS)为什么选择SPFA1、很明显,通过读题,我们一下就能看出来这是有关最短路径问题,但却不是正常的最短路径,而是次短路径。2、回顾Dijkstra,每一次都是从dis中找到最小值(即离源点最近的点),用这个点再去更新别的未访问点,这样的话仅仅维护一个最短路径和容易,但是还要维护一个次短路径,这样的话就原创 2021-10-20 21:15:43 · 253 阅读 · 0 评论 -
图论最短路径专题(力扣743、5888)
第八十五天 --- 图论最短路径专题(力扣743、5888)题目一朴素Dijkstra解决无负权边的单源最短路径问题思路代码邻接矩阵邻接表复杂度Floyd解决多源点最短路径问题题目二堆优化Dijkstra解决无负权边的单源最短路径问题思路:自己封装堆代码Bellman Ford算法解决带有负权边或者有限制的最短路径问题SPFA:Bellman Ford算法的优化题目一力扣:743. 网络延迟时间本题其实就是让求各个点到源点最短路,且最短路中要找到最大者。朴素Dijkstra解决无负权边的单源最原创 2021-10-19 19:57:41 · 2086 阅读 · 0 评论 -
力扣第 63 场双周赛
第八十四天 --- 力扣第 63 场双周赛题目一思路代码题目二思路代码题目三思路代码题目一力扣:5902. 检查句子中的数字是否递增思路简单模拟,遇到数字就开始计数,一旦出去数字区域了,和之前记录的前导数字比较,不是严格递增则错,严格递增则继续向下统计。代码注:一定要加一个状态,记录一下,当前进入了非数字区域,用不用和之前pre数字比较,看是否严格递增。class Solution {public: int pre = -1;//前导数字 int now = 0;//用于拼当前数字原创 2021-10-17 15:35:48 · 91 阅读 · 0 评论 -
力扣第 63 场双周赛
第八十三天 --- 力扣第 63 场双周赛题目一思路代码题目二思路代码题目一力扣:5885. 使每位学生都有座位的最少移动次数思路1、就一个字,就近原则,其实是一种贪心的想法,我为了让总体次数最少,所以分给到每个人而言,就是每个人都要保证移动的次数最少,所以要找离他最近的,所以要把凳子和学生按照所在位置从小到大重排,让位置小的学生,找位置号小的座位,位置大的找位置大的。2、i号学生找与之相对的i号作座位才能保证总移动最小,我们拿两个学生做例子如下:不难发现,不按照上述方法,就会产生重复路原创 2021-10-17 14:53:43 · 132 阅读 · 0 评论 -
力扣787-K 站中转内最便宜的航班2021-10-14
第八十二天 --- 力扣787-K 站中转内最便宜的航班题目一思路定状态定初值找转移找答案代码题目一力扣:787思路1、这个题,求得其实就是让花费最少的路径问题,并且只有一个固定源头src,所以乍一看们就是 Dijkstra 算法,但是请看题目,有一个k的限制,即所到达的中间节点不可以超过个k个,这件事Dijkstra 就办不到了,朴素的Dijkstra 只能为我们找到最短路径,但是路径内部不好判断。2、再次看题,假设当前航班要到点i,那么他只能从和他相邻的点飞过去,票价是之前的加上本次票价原创 2021-10-14 20:44:11 · 294 阅读 · 0 评论 -
力扣547-省份数量
第八十一天 --- 力扣547-省份数量题目一思路并查集DFSBFS代码并查集DFSBFS题目一力扣:547思路经典的图论问题,因为城市间联通等效于边,城市等效于点。并查集(有关并查集详细讲解,见我这篇博客力扣648冗余连接,在此不再赘述。)1、本题其实我第一眼拿来,就是一个并查集问题,因为有很明显的提示—>省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。这里很明显突出了一个省属于一个互相连通的集合,所以维护这种集合问题,最好就用并查集。2、这个题和经典问题“外星人原创 2021-10-13 21:55:15 · 455 阅读 · 0 评论 -
力扣131-分割字符串
第八十一天 --- 力扣131-分割字符串题目一思路代码题目一力扣:131思路1、要先弄懂本题目是啥意思,要对s进行分割,分割出来的各个部分必须要是回文的,要求出所有可能的组合,这个一听,求出所有可能的情况,这个时候就要想到,可能是回溯算法,也有可能是DP,再看,是字符串分割问题,这种问题一般就是定位到回溯法暴力枚举所有可能的结果,用一些条件进行剪枝来优化。2、到了这里我们来分析一下什么时候用回溯:组合问题:N个数里面按一定规则找出k个数的集合排列问题:N个数按一定规则全排列,有几种排列方原创 2021-10-12 21:15:02 · 464 阅读 · 0 评论 -
力扣262周赛-2034
第八十天 --- 力扣262周赛-2034题目一思路代码题目一力扣:2034思路注:更多c++STL库常用容器,见C++ STL常用容器API总结1、本题思路很简单,直接按照题目模拟就行,但是关键就在于数据量巨大,需要用良好的数据结构封装已知的数据,才能在接下来的查询中,用最快的速度完成,要不然必定会超时,博主也是吃了没文化的亏,没想到对应的数据结构。2、当出现了要快速的添加、查找、删除,并且不要求内部有顺序的时候,就用unordered_map/unordered_set。但是以上这两个原创 2021-10-11 20:59:29 · 97 阅读 · 0 评论 -
力扣262周赛-5895+5894
第七十九天 --- 力扣262周赛-5895+5894题目一思路代码题目二思路代码题目一力扣:5895思路这里介绍一个思考问题办法:分块思考1、我们就假设按照某一个值item来统一这个大矩阵,因为要统一每一个值,所以必须遍历所有值,所以用二维循环即可。针对每一个值,abs(grid[i][j]- item)%x==0,说明经过有限次加或者减可转化,反之不可转化(要使任意两元素最终相等,这两元素的差必须是 x 的倍数,否则无法通过加减 x 来相等),abs(grid[i][j]- item)/原创 2021-10-10 16:28:49 · 83 阅读 · 0 评论 -
力扣187. 重复的DNA序列
第七十八天 --- 力扣187. 重复的DNA序列题目一思路朴素算法哈希+滑动窗口+位运算代码朴素算法哈希+滑动窗口+位运算题目一力扣:187思路我们在拿到一个题目的时候,先不考虑高级算法,就用最朴素的想法先做朴素算法1、我们一拿到这个题,要求是一个字符串的子串,且固定长度10,所以可以用长度为十的固定滑动窗口(即左右指针一起移动),来从头找到所有的符合目标的子串。再次读题,要求子串出现次数>=2,所以我们完全可以用一个unordered_map存储每个子串出现的次数,动态统计个数(一原创 2021-10-10 15:56:31 · 191 阅读 · 0 评论 -
力扣684冗余连接
第七十七天 --- 力扣684冗余连接题目一思路 :并查集并查集存储功能本题思路代码附加题目思路示例代码(可能有错误,参照思路即可)题目一力扣:684思路 :并查集并查集1、一定心中要有数,一旦涉及了二者是否所属同一个集合,尤其在图论里面,一定要想到并查集,并查集可以以很快速的速度查询该元素所属集合,以及合并集合,有时候我们可以根据两个元素是否属于同一个集合来做文章解题,也可以根据集合的个数来解题(即记录集合个数,当集合不断合并只剩下一个时候的情况等等问题。)2、并查集很好实现分成两块介绍原创 2021-10-08 23:55:18 · 340 阅读 · 0 评论 -
力扣200岛屿数量
第七十六天 --- 力扣200岛屿数量题目一思路 :这类题DFS模板代码DFSBFS题目一力扣:200思路 :这类题DFS模板1、这是图论里经典的一类网格题,它并不给你一个正常意义上的图,而是给你一个网格,网格上有数字,用不同的数字标记出来不同的位置,让你对不同的位置进行一系列的计算。2、这种题最朴素的解法就是DFS3、一定要明白,任何一个点,在这张网格上,都有四个前进方向,前后左右,所以每个点处DFS,要朝四个方向上进行。5、这种题目一定记住,你扩充点的时候,就是按照四个方向扩充,不用原创 2021-10-08 22:09:11 · 137 阅读 · 0 评论