![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法题题解
文章平均质量分 60
算法很重要!
STATICHIT静砸
你所见及我
展开
-
刷题日记6.25
操作,通常用于加密、校验和其它计算任务中。异或操作符在JavaScript等编程语言中的表示为`^`。对于两个操作数的每一对对应的比特位,只有当它们。注意题目要求实现线性时间复杂度算法解决,所以就不要想着排序或者用set数组之类的了。这道题考察的是异或算法,也是异或算法的一个典型作用例子。异或(XOR)是一种常用的。所以题目的做法一目了然。原创 2024-06-25 01:45:04 · 279 阅读 · 0 评论 -
刷题记录6.24
438. 找到字符串中所有字母异位词这道题乍一看感觉很复杂。因为 异位词指由相同字母重排列形成的字符串,包括相同的字符串,那么就会有很多种组成,增加题目的复杂性。对于这个我们可以转化成计算字母出现的频率,如果频率一致即符合要求。这道题的思路:滑动窗口根据题目要求,我们需要在字符串 s 寻找字符串 p 的异位词。因为字符串 p 的异位词的长度一定与字符串 p 的,所以我们可以在字符串 s 中构造一个长度为与字符串 p 的长度相同的,并在滑动中维护窗口中每种字母的数量;原创 2024-06-24 23:46:41 · 845 阅读 · 0 评论 -
Week1
好久之前写的算法题解!!!一直忘记在草稿箱里了,既然写了就发出来吧!原创 2024-04-26 11:42:47 · 764 阅读 · 0 评论 -
刷题记录-leetcode字母异位词分组
5️⃣ list.push(str) ==>将当前字符串放进list(如果存在一样的hashkey,会添加到列表里去,如果不存在,会添加到我们新建的list里面去)4️⃣ map.get(key) ==>存在key键的值=>map[key]对应的[xxxxx] / 不存在 => -1,新建一个。这道题考察的是对 哈希表(如JavaScript 中的 Map)的运用,以及对字母异位词的理解和处理能力。所以在这个问题中,哈希表的key是按照字母顺序排列后的字母组成的字符串,value是由相同字母异位词组成的。原创 2024-04-01 17:04:55 · 514 阅读 · 0 评论 -
leetcode第 387 场周赛总结
而且Y的位置是随n的大小固定的,所以我们只需要统计出Y内的0,1,2的数量以及整个矩阵的0,1,2的数量,然后计算出最小操作数就可以了。这道题其实就是个简单的二维前缀和,也很简单。这里我已经改进了,但主要还是提供一个思路,就不把修改后的代码贴出来了,如果不会这道题可以顺着我的思路自己做出来。第一道简单题,可以通过slice(-1)获取最新插入的数,进行比较分别操作即可,没什么好说的。这次周赛,题目比较简单,第三道题有点浪费了时间,思路是对的,但是被我把问题复杂化了。数值只可能是0,1,2;原创 2024-03-03 12:12:20 · 381 阅读 · 1 评论 -
【第317场力扣周赛】美丽整数的最小增量
这题就是个朴实无华的数学题,想明白就一下子能做出来了。原创 2022-11-02 21:26:39 · 71 阅读 · 0 评论 -
【第317长场力扣周赛】最流行的视频创作者
这道题当时比赛时没写出来,一直报编译错误,还以为是vector二维数组没有开辟大小导致的,后来结束发现是for循环的时候>写成了>=导致数组越界了,这个细节当时没有发现,有点可惜。气死了,这篇文章些都快写完了,然后写错了个东西我快捷键撤销一下直接给我撤没了还回不去!我们看到的p.first和p.second指的就是map中键值对的key和value,非常方便,map也可以这样子使用。,因为在红黑树中,每一个节点都要额外保存父节点和子节点的连接,因此使得每一个节点都占用较大空间来维护红黑树性质。原创 2022-11-02 21:21:06 · 809 阅读 · 0 评论 -
2022年下半年 软件设计师 上午试卷(前21题)
相反,M公司已经将其开发的某软件产品注册商标为S,说明该软件产品具有商标权,并且为确保公司在市场竞争中占据优势地位,M公司对员工进行了保密约束,但这并未涉及到专利权的问题。编译后的代码可以在不同的机器上执行,具有较好的可移植性。在风险管理中,有些风险可能比其他风险更重要或更紧急,因此应根据其重要性和紧急性对风险进行优先级排序,并采取适当的措施进行管理,以有效地降低风险对项目的影响。下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,边上的数字表示完成该活动所需要的天数。原创 2023-10-19 20:22:22 · 383 阅读 · 0 评论 -
call、apply、bind应用题型
call、apply和bind都是JavaScript中Function对象的原型方法,它们的主要作用是改变函数的执行call、apply和bind都是JavaScript中Function对象的原型方法,它们的主要作用是改变函数的执行上下文,即。call是函数改变this指向的一个方法,题目要求我们封装函数f,所以返回的是一个function,封装后的f,所以在方法中要返回一个function。这道题,考察的是修改this指向,延申到call,apply和bind的作用和区别。(注意这里的参数调用方法)原创 2023-12-29 01:58:16 · 364 阅读 · 0 评论 -
2022年下半年 软件设计师 上午试卷(41题—75题)
此处的故障更偏向于具体的计算过程中的问题,而不是整个系统的故障。给定员工关系E(员工号,员工名,部门名,电话,家庭住址)、工程关系P(工程号,工程名,前期工程号)、参与关系EP(员工号,工程号,工作量)。【10,8,6,4,2】设栈初始时为空,对于入栈序列1, 2, 3, ... , n,这些元素经过栈之后得到出栈序列P1,P2,P3,,,,,Pn,若P3=4,则P1,P2不可能的取值为。对有序数组(3,14,27,39,42,55,70,85,93,98),成功查找和失败查找所需要的平均比较次数分别是。原创 2023-10-19 22:41:11 · 1101 阅读 · 0 评论 -
操作系统复习题(1-4章)
资源已绑定。原创 2024-01-06 00:26:05 · 358 阅读 · 0 评论 -
2022年下半年 软件设计师 上午试卷(22题—40题)
当CPU接收到中断信号时,它会立即中止当前的执行程序,并跳转到预先定义好的中断处理程序中,执行需要处理的中断请求,当中断处理完成后,CPU再。采用面向对象方法进行某游戏设计,游戏中有野鸭、红头鸭等各种鸭子边游泳戏水边呱呱叫,不同种类的鸭子具有不同颜色,设计鸭子类负责呱呱叫和游泳方法的实现,显示颜色设计为抽象方法,由野鸭和红头鸭各自具体实现,这一机制称为。多态允许不同类的对象对相同的消息做出不同的响应,所以给这些类型的一组不同对象发送同一显示颜色消息时,能实现各自显示自己不同颜色的结果,这种现象称为多态。原创 2023-10-19 21:28:39 · 495 阅读 · 0 评论 -
前端常见知识点复盘10.25
3)数据响应式:Vue会对data中的数据进行响应式处理,即通过Object.defineProperty()方法将数据转化为getter和setter,当数据发生变化时,能够触发依赖该数据的视图更新。适用于子组件向父组件传递数据的场景。事件的发送者(发布者)将事件发布到事件中心,事件的接收者(订阅者)通过订阅事件来接收并处理事件。5)虚拟DOM更新:当数据发生变化时,Vue会重新生成虚拟DOM,并与之前的虚拟DOM进行比较,找出差异(Diff算法),然后只更新发生变化的部分,而不是直接操作真实DOM。原创 2023-10-25 19:43:26 · 245 阅读 · 0 评论 -
CF - Tear It Apart
找出最大的相邻(理论上相邻,就是第一个a和第二个a,第二个a和第三个a之间的距离这个意思的相邻)该字母之间的字符个数。如果能把隔最远的两个相邻该字母靠近,那么其他的就一定能消除。当我们想要使得两个字符靠近,先要看她两之间隔着几个无关字符,假设隔了N个,那么由于每次删除的字符不能相邻(至少也要隔一个),所以最少通过log2(N)+1次来消除她们之间的无关字符。这里我们进行了一个转换,就是用一个二维数组的一维存储当前字符是谁(通过-'a'换成0~26数字),用它的二维(也就相当于每一行)存储该字母出现的下标。原创 2023-04-26 22:31:05 · 143 阅读 · 0 评论 -
归并排序针对性刷题
main:归并排序原创 2022-07-19 17:18:05 · 161 阅读 · 0 评论 -
CSS刷题错题记录
每天做几个题,顺便记录错题原创 2022-12-27 22:55:25 · 83 阅读 · 0 评论 -
java基础巩固刷题
java刷题原创 2022-07-18 17:51:06 · 356 阅读 · 2 评论 -
【刷题日记】最长等差数列
等差数列的特点是相邻两个数的差值是一致的。该题数组中的每个元素值大小范围是【0~500】,所以等差数列的差值范围是【-500~+500】,我们计算差值时可以把差值+500使得差值范围变成【0~1000】;注意,那要把dp数组大小改到1000+.初始化:每单独一个数字都可以是任意等差数的等差数列的唯一成员,所以初始化dp的值为1。dp【i】【j】的含义是:以第i个值为最后一个元素,以j为差值的等差数列的长度。这道题,只要思路想到了就很好写。) 的值都相同,那么序列。按照这个思路可以解题。原创 2024-02-17 01:51:27 · 203 阅读 · 0 评论 -
【刷题日记】最长定差子序列
更新哈希表,这里 `dp.get(v - difference) || 0` 是获取以 `v-difference` 结尾的最长等差子序列的长度,如果不存在则返回0,然后加1表示将当前元素 `v` 加入到等差子序列中。在这个问题中,状态转移方程是 `dp[v] = dp[v-d] + 1`,意味着如果存在一个值为 `v-d` 的元素,那么以值为 `v` 的元素结尾的最长等差子序列的长度可以从以 `v-d` 结尾的最长等差子序列的长度推导出来,即在后者基础上加一。` 更新找到的最长等差子序列的长度。原创 2024-02-06 17:07:47 · 736 阅读 · 0 评论 -
【刷题日记】最长数对链
当pairs【i】【0】>pairs【j】【1】时,dp【i】=max(dp【i】,dp【j】+1);思路 :这道题其实,还是和前一个很像,只不过是数组对找最长递增序列的感觉。然后dp【i】含义设置为以pairs【i】【1】为结尾的最长递增序列长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。- 如果返回值 等于 0,则`a`和`b`的相对位置不变。- 如果返回值 小于 0,则将`a`排在`b`之前。- 如果返回值 大于 0,则将`b`排在`a`之前。个数对组成的数对数组。原创 2024-02-06 16:15:33 · 265 阅读 · 0 评论 -
【刷题日记】最长递增子序列的个数
如果 dp【i】< dp【j】+1,我们需要更新dp【i】=dp【j】+1,同时,cnt【i】=j的最长子序列个数即cnt【j】。如果dp【i】= dp【j】+1,说明两种情况长度相同,要把cnt【j】也加到cnt【i】中。同时,如果res = dp【i】,说明这两种情况长度一样,要把cnt【i】也加到ans中。思路:这道题和上一道题的本质是一样的,只是在迭代结果时要做一些更细致的操作。上一题我们要取dp【i】和dp【j】+1中更大的。还需要增加一个记录结果个数值的变量ans。返回最长递增子序列的个数。原创 2024-02-06 15:52:19 · 199 阅读 · 0 评论 -
【刷题日记】最长递增子序列
给你一个整数数组 ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如, 是数组 的子序列。这道题比较简单。只需要用到一维的dp数组。首先dp【i】的含义设定为数组中 0 到 i 项中最长递增子序列的长度初始化时,每个数字本身单独就是一个递增子序列,所以初始化dp值为1递推公示:从前往后推,遍历nums数组,然后在当前数组项的基础上遍历前面的数组项。当nums【i】>nums【j】时才可能产生更长的递增子序列,在dp【j】的基础上加原创 2024-02-06 15:36:49 · 168 阅读 · 0 评论 -
【刷题题解】编辑距离
这道题的dp【i】【j】含义我们设定为:word1的前 i 字符串转变为word2的前 j 字符串所需要进行的最小操作数。=word【j】时,我们有三种操作选择,增加/删除/替换;,即从空字符串变成另一个字符串或者从一个字符串变为空,转换所需的操作数即为另一个单词的长度。这道题也是,一眼动态规划,乍一看感觉很复杂,仔细思考一下还是觉得很复杂。中的一个为空时,转换所需的操作数即为另一个单词的长度。逐一遍历word1的每个字符上遍历word2的每个字符。当word【i】=word【j】时,无需做改变。原创 2024-02-04 23:49:55 · 262 阅读 · 0 评论 -
【刷题题解】最长回文子序列
给你一个字符串s,找出其中最长的回文子序列,并返回该序列的长度。子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列这道题,一眼动态规划,但是即使动起来也规划不了一点😅好,这道题,我们可以这样子思考,先把视线聚焦在单个字符上,单个字符是s【i】就是一个回文字符串,所以,在此基础上,原创 2024-02-04 22:52:40 · 284 阅读 · 0 评论 -
刷题日记-139. 单词拆分
如果找到了一个拆分点 `j`,且 `dp[j]` 为 `true`,表示从起始位置到 `j` 的子字符串可以被拆分为字典中的单词,那么将 `dp[i]` 设置为 `true`。最后,如果 `dp[s.size()]` 为 `true`,表示整个字符串 `s` 可以被拆分为字典中的单词,返回 `true`;否则返回 `false`。这段代码是一个解决单词拆分问题的函数 `wordBreak`,其作用是判断字符串 `s` 是否可以被拆分为由字典 `wordDict` 中的单词组成。在每个拆分点 `j` 处,原创 2024-01-21 10:02:30 · 405 阅读 · 0 评论 -
JS38 高频数据类型
JS38 高频数据类型。原创 2023-10-26 19:35:37 · 89 阅读 · 0 评论 -
本周刷题记录
而第一个数,i=1,所以第一个数可以随意取,那么其他位置上的数我们只需要取i本身就行(相当于取了i的1倍,符合要求),那么第一个数取多少取决于该条件。因为只有两种操作,即删除最小的两个数或者删除最大的一个数,这样的题目我们很容易想到先进行一个sort排序,那么删除哪个数也就是维护两端端点就行了。很容易发现,我们只需要遍历整个序列一共有多少个0,假设是n个0,那么再遍历前n个数,遇到1则ans加1,相当于用前n个里的1去消除掉后面的0。序列只由0或1组成,我们可以进行的操作是,删除一个数加到另一个数上面去。原创 2023-05-17 20:06:37 · 465 阅读 · 0 评论 -
CF - Lucky Numbers
可以发现,每遍历100个数必然会出现一个存在9和0的组合的数,而两个个位数相减最大结果就是9,所以遍历时计算出幸运值9时候就无需继续遍历了。这道题相对来说就很简单了,注意数值限制范围在1道1e6,虽然这道题确实暴力就能做出来,但也需要进行剪枝避免浪费时间多余的操作。题意:一个数的幸运值计算规则是用里面最大的数字-最小的数字所得值 给出一个范围,求这个范围里幸运值最大的是哪个数。思路也很简单,就是把该数字拆成一位一位过程中找到最大值和最小值,返回它们之差。我们不能进行单纯的遍历计算比较,会时间超限的。原创 2023-04-26 23:02:29 · 286 阅读 · 0 评论 -
CF - Playing in a Casino
因此,例如,如果总共有四个玩家,则进行六场比赛:第一场比赛对第二场比赛,第一场比赛对第三场比赛,第一场比赛对第四场比赛,第二场比赛对第三场比赛,第二场比赛对第四场比赛,第三场比赛对第四场比赛。,这里的i指的是1~n,n最大3e5,a【i】【j】最大1e6,一相乘就变成了3e11,所以必须用long long int,而vector中的数值也需要用long long int,对范围做判断即可,不做再多解释了。(注意由于进行了行列转换,这里的一维要用m,二维用n)回到前面,如果n>1,接下来要对每列进行排序。原创 2023-04-26 22:55:31 · 466 阅读 · 0 评论 -
CF - Li Hua and Pattern
题意:给出了矩阵,里面每个位置分为蓝色或红色(数据上用1和0体现了),给出了一个操作次数,每次可以改变一个坐标的颜色,问能否通过操作使得图像旋转180度后不变。解:很容易想到,需要使该图像中心对称,应该对称相等的两个位置不相等时,就需要进行一次操作,把其中一个修改成另一个颜色,我在输入这个操作时就计算出了需要修改的次数。如果图像n*n的奇数长度的边,那么它最中间那个位置和它自己中心对称,无需考虑是什么颜色,那么不管还需要操作多少次都可以直接操作它消耗掉。但一开始忽略了很重要的一点,我没完全看明白的题意,原创 2023-04-26 22:20:36 · 429 阅读 · 0 评论 -
CF- Yura‘s New Name
因为如果是_的话,它的左右两边必须是^^它才能合理存在,其中我们还要对结尾进行特判,因为我们无法遍历到最后位置的后一个位置,所以如果结尾是个_,那它后面必须加一个^;^_^和^^是想要的,题目让我们把输入的字符串,向里面添加 ^ 或者 _ 使得整个字符串都是这两部分组成的,问最少添加多少个字符。解:这道题我调试了挺多次,基本逻辑就是,遍历到一个字符时,判断它前面是_吗,根据这个和当前字符是什么来确定是否需要添加。在两端加上一个_,然后只需要在_和_之间加一个^即可,你别说,你还真别说,真妙啊。原创 2023-04-26 22:10:35 · 139 阅读 · 0 评论 -
CF - Li Hua and Maze
而且判断第一个位置时如果它在角落那就不需要判断第二个位置了,因为最少需要堵两个位置,不会再少了,此时可以直接输出然后2进行下一轮判断。题意:题目给出一个矩阵,再给出两个位置(这两个位置不会直接相邻),求最少需要堵几个位置使得两位置之间无路可通。这道题给出的样例解释非常具有迷惑性,还特意画了一条通顶的路线堵住,其实总共只有那么三种情况,就是2,3,4个。对两个位置进行判断的方法是一样的,所以可以提取出来作为一个函数方法。当障碍靠边但不在角落时,只需要堵3个位置。当障碍在四个角上时,只需要堵2个位置。原创 2023-04-26 22:03:11 · 85 阅读 · 0 评论 -
CF:Sort the Subarray
解法:很容易想到,两数组从两边往中间比较,首次出现不同的两端组成的子序列是最小目标子序列,但题目希望这个排序的子序列尽可能的长,所以我们只需要在这两端的基础上往两边遍历,如果左边往左遍历,小于端点且逐渐减小,那么这部分可以加入,右边同理,因为符合这个规则的话加上这两部分她们及时参与排序也并不需要进行位置的改变。题意: 第二个数组是由对第一数组的一个子序列排序后得到的,要求的是该子序列的最长是哪一段。原创 2023-04-26 21:50:51 · 95 阅读 · 0 评论 -
CF46B T-shirts from Sponsor
这道题我的思路是,先把尺码转为数字代表,然后每次从i=0到5的移动量先判断大i码是否有存量再判断小i码是否有存量,有就输出并减少库存跳出for循环,这样子就达到了既选择最接近的尺寸又在大小都有时优先选择偏大尺码的要求。最近事情比较多,做的题目都没时间写题解,会抽空都把题解补了。洛谷 CF46B T-shirts from Sponsor。原创 2022-10-15 12:42:14 · 254 阅读 · 0 评论 -
P2697 宝石串
P2697 宝石串原创 2022-10-23 21:56:36 · 579 阅读 · 2 评论 -
P1631 序列合并
P1631 序列合并原创 2022-10-23 20:44:54 · 358 阅读 · 0 评论 -
P2040 打开所有的灯
P2040 打开所有的灯原创 2022-10-24 18:02:02 · 379 阅读 · 0 评论 -
最大降雨量
最大降雨量(构造)本题总分:10 分【问题描述】由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。这个法术需要用到他手中的 49 张法术符,上面分别写着 1 至 49 这 49 个数字。法术一共持续 7 周,每天小明都要使用一张法术符,法术符不能重复使用。每周,小明施展法术产生的能量为这周 7 张法术符上数字的中位数。法术施展完 7 周后,求雨将获得成功,降雨量为 7 周能量的中位数。由于干旱太久,小明希望这次求雨的降雨量尽可能大,请大最大值是多少?______【答案提.原创 2022-04-08 12:51:56 · 124 阅读 · 0 评论 -
蓝桥杯 完全二叉树的权值
完全二叉树的权值时间限制: 1.0s 内存限制: 256.0MB 本题总分:15 分【问题描述】给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从上到下、从左到右的顺序依次是 A1, A2, · · · AN,如下图所示:现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。注:根的深度是 1。【输入格式】第一行包含一个整数 N。第二行包含 N 个整数 A1, A2, · · · AN 。.原创 2022-04-08 14:22:18 · 70 阅读 · 0 评论 -
蓝桥杯 数列求值
数列求值(暴力)本题总分:5 分【问题描述】给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求第 20190324 项的最后 4 位数字。【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个 4 位整数(提示:答案的千位不为 0),在提交答案时只填写这个整数,填写多余的内容将无法得分。有很多和这个题类似的题,就是数据很大,以至于不能超过long long的范围 所以这个时候我们要边算边取余,而且这种题目有一.原创 2022-04-08 12:57:55 · 183 阅读 · 0 评论