![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法题
文章平均质量分 75
muyierfly
这个作者很懒,什么都没留下…
展开
-
DAY28-力扣刷题
实现一个二叉搜索树迭代器类roottruefalseint next()注意,指针初始化为一个不存在于 BST 中的数字,所以对next()的首次调用将返回 BST 中的最小元素。你可以假设next()调用总是有效的,也就是说,当调用next()时,BST 的中序遍历中至少存在一个下一个数字。原创 2024-07-24 10:22:46 · 358 阅读 · 0 评论 -
25.动态规划之完全背包
【代码】25.动态规划之完全背包。原创 2024-07-24 10:21:12 · 413 阅读 · 0 评论 -
1.优化算法之双指针1
2.在 b 后面的区间内,利用“双指针"找到两个数使这两个数的和等于target-a-b 即可。2.在a后面的区间内,利用“三数之和”:找到三个数,使这三个数的和等于 target-a 即可。调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4],请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。数组划分,数组分块->双指针算法(利用数组下标充当指针)移动到数组的末尾,同时保持非零元素的相对顺序。调用函数后,输入的数组将被修改为:[1,2,3]原创 2024-06-24 22:25:55 · 718 阅读 · 0 评论 -
2.优化算法之滑动窗口1
它是 words 中以 ["the","foo","bar"] 顺序排列的连接。它是 words 中以 ["foo","bar","the"] 顺序排列的连接。它是 words 中以 ["bar","the","foo"] 顺序排列的连接。起始索引等于 0 的子串是 "cba", 它是 "abc" 的变位词。起始索引等于 0 的子串是 "ab", 它是 "ab" 的变位词。起始索引等于 1 的子串是 "ba", 它是 "ab" 的变位词。起始索引等于 2 的子串是 "ab", 它是 "ab" 的变位词。原创 2024-06-25 23:46:01 · 1005 阅读 · 0 评论 -
3.优化算法之二分查找1
给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。示例 1:[3,4]示例 2:[-1,-1]示例 3:[-1,-1]原创 2024-06-26 16:28:08 · 1236 阅读 · 0 评论 -
4.优化算法之前缀和1
左侧数之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,右侧数之和 sum = nums[4] + nums[5] = 5 + 6 = 11 ,二者相等。右侧数之和 sum = nums[1] + nums[2] = 1 + -1 = 0。[0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。左侧数之和 sum = 0 ,(下标 0 左侧不存在元素),原创 2024-06-27 23:25:22 · 857 阅读 · 0 评论 -
5.优化算法之位运算
用整型变量某一个byte位的0,1来表示信息。原创 2024-06-28 13:34:34 · 1045 阅读 · 0 评论 -
6.优化算法之模拟
第 2 秒,提莫再次攻击艾希,并重置中毒计时器,艾希中毒状态需要持续 2 秒,即第 2 秒和第 3 秒。- 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。- 第 4 秒,提莫再次攻击艾希,艾希中毒状态又持续 2 秒,即第 4 秒和第 5 秒。艾希在第 1、2、4、5 秒处于中毒状态,所以总中毒秒数是 4。艾希在第 1、2、3 秒处于中毒状态,所以总中毒秒数是 3。当提莫攻击艾希,艾希的中毒状态正好持续。原创 2024-06-29 09:08:31 · 881 阅读 · 0 评论 -
7.优化算法之分治-快排&归并
分而治之。原创 2024-06-30 10:00:47 · 458 阅读 · 0 评论 -
8.优化算法之链表
请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。将它们合并到一个有序链表中得到。两两交换链表中的节点。原创 2024-06-30 10:01:21 · 389 阅读 · 0 评论 -
9.优化算法之哈希表
1. 两数之和 - 力扣(LeetCode)原创 2024-07-01 09:39:09 · 835 阅读 · 0 评论 -
10.优化算法之字符串
【代码】10.优化算法之字符串。原创 2024-07-02 09:27:07 · 355 阅读 · 0 评论 -
11.优化算法之栈
可以用数组模拟栈结构。原创 2024-07-02 09:27:23 · 404 阅读 · 0 评论 -
12.优化算法之队列+宽搜(BFS)
⼆叉树的锯⻮形层序遍历。原创 2024-07-03 09:57:55 · 497 阅读 · 0 评论 -
13.优化算法之优先级队列(堆)
最后⼀块⽯头的重量。原创 2024-07-03 09:58:15 · 819 阅读 · 0 评论 -
14.优化算法之BFS解决FloodFill算法1
dfs:深度优先遍历(红色)bfs:宽度优先遍历。原创 2024-07-04 10:02:35 · 393 阅读 · 0 评论 -
15.优化算法之BFS最短路问题2
迷宫中离⼊⼝最近的出⼝。原创 2024-07-05 09:43:59 · 337 阅读 · 0 评论 -
16.优化算法之BFS多源3
然后再遍历⼀遍矩阵,看看哪些位置的。相连的联通区域全部标记⼀下;标记的时候,可以⽤「多源。原创 2024-07-06 09:31:33 · 449 阅读 · 0 评论 -
17.优化算法之解决拓扑排序4
【代码】17.优化算法之解决拓扑排序4。原创 2024-07-07 09:36:36 · 243 阅读 · 0 评论 -
18.动态规划之斐波那契数列模型1
对于这类需要取模的问题,我们每计算⼀次(两个数相加/乘等),都需要取⼀次模。需要注意的是,这道题⽬说,由于结果可能很⼤,需要对结果取模。在计算的时候,三个值全部加起来再取模,即。是不可取的,同学们可以试验⼀下,取题⽬范围内最⼤值时,⽹站会报错。的时候是没有办法进⾏推导的,因。发⽣了溢出,我们的答案就错了。从我们的递推公式可以看出,因此我们需要在填表之前,将。位置时,⼀共有多少种⽅法。从我们的递推公式可以看出,因此我们需要在填表之前,将。毫⽆疑问是「从左往右」。毫⽆疑问是「从左往右」。原创 2024-07-08 09:56:40 · 885 阅读 · 0 评论 -
19.动态规划之路径问题2
根据「状态转移⽅程」的推导来看,填表的顺序就是「从上往下」填每⼀⾏,在填写每⼀⾏的时候 「从左往右」。可以在最前⾯加上⼀个「辅助结点」,帮助我们初始化。在本题中,「添加⼀⾏」,并且「添加⼀列」后,只需将。辅助结点⾥⾯的值要「保证后续填表是正确的」;主要关注的是机器人刚开始站的位置。根据「状态表⽰」,我们要返回。的位置)向下⾛⼀步,转移到。的位置)向右⾛⼀步,转移到。位置处,⼀共有多少种⽅式。位置的⽅法数,那么到达。位置出发,巴拉巴拉;从起始位置出发,到达。「下标的映射关系」。原创 2024-07-17 09:55:45 · 590 阅读 · 0 评论 -
20.动态规划之简单多状态dp问题3
其实不用考虑“买入状态”,因为有股票卖不出去肯定不是最大值。其实结果是g(n-1)呢内的。原创 2024-07-18 10:25:20 · 434 阅读 · 0 评论 -
21.动态规划之子数组序列4
此时画叉的情形不用考虑。原创 2024-07-19 21:11:16 · 263 阅读 · 0 评论 -
22.动态规划之子序列问题5
最长的斐波那契子序列的长度(重点)等差数列划分II - 子序列。其实最优解是贪心思路。原创 2024-07-20 10:13:11 · 250 阅读 · 0 评论 -
23.动态规划之回文串问题5
让字符串成为回文串的最小插入次数。回文串分割IV(hard)用动态规划的思想进行预处理。分割回文串II(hard)原创 2024-07-21 10:06:31 · 427 阅读 · 0 评论 -
24(1).动态规划之两个数组的dp问题
最长公共子序列。原创 2024-07-22 10:50:04 · 262 阅读 · 0 评论 -
24(2).动态规划之背包问题(重点)
背包问题 (Knapsack problem) 是⼀种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。•多重背包问题:每件物品最多有 si 个•混合背包问题:每个物品会有上⾯三种情况......•分组背包问题:物品有 n 组,每组物品⾥有若⼲个,每组⾥最多选⼀个物品其中上述分类⾥⾯,根据背包是否装满,又分为两类:•不一定装满背包•背包一定装满优化方案:•空间优化 - 滚动数组•。原创 2024-07-22 10:50:39 · 504 阅读 · 0 评论 -
DAY1-力扣刷题
运行结果:时间复杂度:O(N^2),N为数组的长度空间复杂度:O(1),只用到常数个临时变量。原创 2024-06-02 10:45:39 · 911 阅读 · 1 评论 -
DAY2-力扣刷题
Character.isDigit( c ),其中c是字符,这个方法可以用于判断字符c是不是数字形式的字符。假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为。是指正序(从左向右)和倒序(从右向左)读都是一样的整数。存储最终结果,而且有些数字可能是合法范围内的数字,但是。函数,使其能将字符串转换成一个 32 位有符号整数。// 先把字符转为字符串,再转换为数字。//可以运行出来但是超时了。是一个回文整数,返回。原创 2024-06-15 17:40:22 · 563 阅读 · 0 评论 -
DAY3-力扣刷题
罗马数字包含以下七种字符:IVXLCD和M。例如, 罗马数字2写做II,即为两个并列的 1。12写做XII,即为XII。27写做XXVII, 即为XXVII。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做IIII,而是IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为IX。IVXXLCCDM给定一个罗马数字,将其转换成整数。//这个题需要找规律编写一个函数来查找字符串数组中的最长公共前缀。原创 2024-06-16 10:13:26 · 708 阅读 · 1 评论 -
DAY4-力扣刷题
给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且的四元组bcd你可以按返回答案。//同样是排序+双指针。原创 2024-06-17 09:36:34 · 990 阅读 · 0 评论 -
DAY5-力扣刷题
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。原创 2024-06-17 11:06:32 · 944 阅读 · 0 评论 -
DAY6-力扣刷题
34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。//看到该时间复杂度我想到了用二分法解决该问题方法一:二分法//首先进行特殊情况的处理l=r=mid;//找到左标记l--;//找到右标记r++;r=mid-1;原创 2024-06-18 10:48:59 · 1211 阅读 · 0 评论 -
DAY7-力扣刷题
amazing!!!原创 2024-06-19 10:14:07 · 498 阅读 · 0 评论 -
DAY8-力扣刷题
给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以返回答案。通过对之前习题的了解,一看到该题就想到了用回溯法。原创 2024-06-20 17:02:22 · 967 阅读 · 1 评论 -
DAY9-力扣刷题
给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。是数组中的一个连续部分。//考虑看到负数或者sum为负数时就刨去 (错误)原创 2024-06-21 09:59:36 · 269 阅读 · 0 评论 -
DAY10-力扣刷题
单词的长度。原创 2024-06-22 12:36:06 · 518 阅读 · 0 评论 -
DAY11-力扣刷题
给定一个包含非负整数的m x n网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。每次只能向下或者向右移动一步。原创 2024-06-23 11:34:46 · 478 阅读 · 0 评论 -
DAY12-力扣刷题
由于每行的第一个元素大于前一行的最后一个元素,且每行元素是升序的,所以每行的第一个元素大于前一行的第一个元素,因此矩阵第一列的元素是升序的。我们可以对矩阵的第一列的元素二分查找,找到最后一个不大于目标值的元素,然后在该元素所在行中二分查找目标值是否存在。若将矩阵每一行拼接在上一行的末尾,则会得到一个升序数组,我们可以在该数组上二分找到目标元素。对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。代码实现时,可以二分升序数组的下标,将其映射到原矩阵的行和列上。给你一个满足下述两条属性的。原创 2024-06-24 11:15:30 · 618 阅读 · 0 评论 -
DAY13-力扣刷题
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。删除重复出现的元素,使得出现次数超过两次的元素。并在使用 O(1) 额外空间的条件下完成。不要使用额外的数组空间,你必须在。,返回删除后数组的新长度。返回该数组所有可能的。原创 2024-06-25 09:05:47 · 388 阅读 · 0 评论