算法
我不认为研究算法有什么快乐的,
但是数钱确实快乐
舔甜歌姬的EGUMI LEGACY
你好,你想度過怎樣的一段人生?
因爲興趣,所以喜歡。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【算法day33】缺失的第一个正数——给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。
给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。原创 2025-04-08 01:09:15 · 296 阅读 · 0 评论 -
【算法day32】解数独重写——编写一个程序,通过填充空格来解决数独问题
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。编写一个程序,通过填充空格来解决数独问题。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。原创 2025-04-07 01:20:13 · 305 阅读 · 0 评论 -
【算法day31】组合总和 II—给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candid
给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次。注意:解集不能包含重复的组合。原创 2025-04-05 23:45:57 · 299 阅读 · 0 评论 -
【算法day30】组合总和——给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组
给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。原创 2025-04-03 23:39:38 · 269 阅读 · 0 评论 -
【算法day29】外观数列——给定一个整数 n ,返回 外观数列 的第 n 个元素
行程长度编码(RLE)是一种字符串压缩方法,其工作原理是通过将连续相同字符(重复两次或更多次)替换为字符重复次数(运行长度)和字符的串联。例如,要压缩字符串 “3322251” ,我们将 “33” 用 “23” 替换,将 “222” 用 “32” 替换,将 “5” 用 “15” 替换并将 “1” 用 “11” 替换。因此压缩后字符串变为 “23321511”。countAndSay(n) 是 countAndSay(n-1) 的行程长度编码。给定一个整数 n ,返回 外观数列 的第 n 个元素。原创 2025-04-02 23:35:20 · 204 阅读 · 0 评论 -
【算法day28】解数独——编写一个程序,通过填充空格来解决数独问题
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。编写一个程序,通过填充空格来解决数独问题。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。原创 2025-04-01 23:50:47 · 435 阅读 · 0 评论 -
【算法day27】有效的数独——请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。
请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。只需要根据以上规则,验证已经填入的数字是否有效即可。一个有效的数独(部分已被填充)不一定是可解的。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。空白格用 ‘.’ 表示。原创 2025-03-31 20:11:17 · 338 阅读 · 0 评论 -
【算法day27】搜索插入位置——时间复杂度为 O(log n) 的算法:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。原创 2025-03-31 13:27:57 · 257 阅读 · 0 评论 -
【算法day27】在排序数组中查找元素的第一个和最后一个位置——给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。return ans;return ans;原创 2025-03-30 23:08:49 · 265 阅读 · 0 评论 -
【算法day26】搜索旋转排序数组——给你 旋转后 的数组 nums 和一个整数 target ,如果 nums 中存在这个目标值 target ,则返回它的下标,否则返回 -1 。
在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2]。给你 旋转后 的数组 nums 和一个整数 target ,如果 nums 中存在这个目标值 target ,则返回它的下标,否则返回 -1。原创 2025-03-30 16:24:40 · 324 阅读 · 0 评论 -
【算法day25】 最长有效括号——给你一个只包含 ‘(‘ 和 ‘)‘ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。
所以我们从右往左再类似地看一次,这次判断 ,左括号数大于右括号数,就失配,令当前匹配数量为0.给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。的情况,这个显然左括号很多,但是右括号严重缺少。也就是说,通过判断左右括号的。但是这个算法没有考虑。原创 2025-03-30 00:07:05 · 398 阅读 · 0 评论 -
【算法day24】下一个排列——下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的 下一个排列 就是在这个有序容器中排在它后
如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1]。而 arr = [3,2,1] 的下一个排列是 [1,2,3] ,因为 [3,2,1] 不存在一个字典序更大的排列。类似地,arr = [2,3,1] 的下一个排列是 [3,1,2]。例如,arr = [1,2,3] 的下一个排列是 [1,3,2]。原创 2025-03-28 10:45:04 · 334 阅读 · 0 评论 -
【算法day23】 串联所有单词的子串——给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同,返回所有串联子串在 s 中的开始索引,你可以以 任意顺序 返回答案。
图示的情况里,bias=2是最后一轮迭代,可知,bias=3的时候,它的第一个迭代就是bias=0的第二个迭代,而这个情况我们已经在bias=0的时候考虑过了。的距离,这样就可以利用哈希表,每次都从哈希表里面挤出去一个即将离开的单词,再加入一个新的单词。去检测对应单词出现了几次,并维护一个以这些单词为键的哈希表。的距离,还要考虑bias=1,2,3的情况。为了能把所有情况考虑到,我们不能只移动。的框依次从左边一个个迭代到右边,的框依次从左边一个个迭代到右边,按照words里面每个词的长度。原创 2025-03-28 02:25:54 · 427 阅读 · 0 评论 -
【算法day22】两数相除——给你两个整数,被除数 dividend 和除数 divisor。将两数相除,要求 不使用 乘法、除法和取余运算。
本题中,如果商 严格大于 231 − 1 ,则返回 231 − 1;例如,8.345 将被截断为 8 ,-2.7335 将被截断至 -2。因此可以找到10/3的时候,ans = 2+1+0 = 3,也就是我们的10/3的答案。,使得X*2大于等于10,可以知道X=3,6,12,24,48……由于当X = 6的时候12大于10,此时可以进行运算10-6 = 4,因此可以每次都X+=X,并且假设ans=1跟着X每次都ans+=1,运算后剩下4,再对4重复上面的过程,4-X<3可知X=3,原创 2025-03-26 23:28:14 · 725 阅读 · 0 评论 -
【算法day21】26. 删除有序数组中的重复项、27.移除元素、 28. 找出字符串中第一个匹配项的下标
给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。然后返回 nums 中唯一元素的个数。然后返回 nums 中与 val 不同的元素的数量。更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。原创 2025-03-25 19:35:24 · 269 阅读 · 0 评论 -
【算法day21】K 个一组翻转链表——给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍
k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。1.优化掉链表内部的倒置逻辑,不用循环,改成用迭代。2.优化掉pair数据的传递,改成用tie。3.简化逻辑,减少冗余的变量。原创 2025-03-25 14:00:06 · 412 阅读 · 0 评论 -
【算法day21】 两两交换链表中的节点——给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。原创 2025-03-25 12:34:05 · 192 阅读 · 0 评论 -
【算法day20】合并 K 个升序链表——给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。
请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。原创 2025-03-24 10:20:07 · 249 阅读 · 0 评论 -
【算法day19】括号生成——数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。原创 2025-03-23 23:02:51 · 445 阅读 · 0 评论 -
【算法day18】合并两个有序链表——将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。原创 2025-03-22 15:40:04 · 243 阅读 · 0 评论 -
【算法day18】有效的括号——给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串 s ,判断字符串是否有效。
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。每个右括号都有一个对应的相同类型的左括号。左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。原创 2025-03-22 15:07:48 · 212 阅读 · 0 评论 -
【算法day17】删除链表的倒数第 N 个结点——给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。原创 2025-03-21 23:55:58 · 261 阅读 · 0 评论 -
【算法day17】四数之和—给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target。输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]输入:nums = [1,0,-1,0,-2,2], target = 0。输入:nums = [2,2,2,2,2], target = 8。你可以按 任意顺序 返回答案。a、b、c 和 d 互不相同。输出:[[2,2,2,2]]原创 2025-03-21 23:20:06 · 347 阅读 · 0 评论 -
【算法day16】电话号码的字母组合
【代码】【算法day16】电话号码的字母组合,dfs,bfs原创 2025-03-20 23:56:27 · 248 阅读 · 0 评论 -
【算法day15】最接近的三数之和
给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。假定每组输入只存在恰好一个解。原创 2025-03-19 21:47:33 · 320 阅读 · 0 评论 -
【算法day14】三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。请你返回所有和为 0 且不重复的三元组。其实仔细想想,三个指针都是单方向移动的?注意:答案中不可以包含重复的三元组。原创 2025-03-19 03:21:11 · 290 阅读 · 0 评论 -
【算法day13】最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。原创 2025-03-17 23:24:09 · 222 阅读 · 0 评论 -
【算法day13】整数转罗马数字&&罗马数字转整数
如果该值以 4 或 9 开头,使用 减法形式,表示从以下符号中减去一个符号,例如 4 是 5 (V) 减 1 (I): IV ,9 是 10 (X) 减 1 (I):IX。仅使用以下减法形式:4 (IV),9 (IX),40 (XL),90 (XC),400 (CD) 和 900 (CM)。你不能多次附加 5 (V),50 (L) 或 500 (D)。如果该值不是以 4 或 9 开头,请选择可以从输入中减去的最大值的符号,将该符号附加到结果,减去其值,然后将其余部分转换为罗马数字。原创 2025-03-17 13:53:45 · 441 阅读 · 0 评论 -
【算法day12】盛最多水的容器——给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使
给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。一句话概括:我们left++和right–都是为了尝试取到更多的水,如果短的板不动的话,取到的水永远不会比上次多。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。原创 2025-03-16 20:59:24 · 175 阅读 · 0 评论 -
【算法day11】正则表达式匹配-给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.‘ 和 ‘*‘ 的正则表达式匹配
【代码】【算法day11】正则表达式匹配-给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.‘ 和 ‘*‘ 的正则表达式匹配。原创 2025-03-16 04:53:11 · 194 阅读 · 0 评论 -
【算法day10】(失败版)正则表达式匹配-给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.‘ 和 ‘*‘ 的正则表达式匹配
所谓匹配,是要涵盖 整个 字符串 s 的,而不是部分字符串。‘*’ 匹配零个或多个前面的那一个元素。失败+写不出来的一天,明天看答案。‘.’ 匹配任意单个字符。原创 2025-03-15 04:26:47 · 190 阅读 · 0 评论 -
【算法day9】回文数-给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
给你一个整数 x ,如果 x 是一个回文整数,返回 true;否则,返回 false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。原创 2025-03-13 22:13:10 · 273 阅读 · 0 评论 -
【算法day9】字符串转换整数 (atoi);请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数。
舍入:如果整数数超过 32 位有符号整数范围 [−231, 231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231 的整数应该被舍入为 −231 ,大于 231 − 1 的整数应该被舍入为 231 − 1。请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数。符号:检查下一个字符(假设还未到字符末尾)为 ‘-’ 还是 ‘+’。转换:通过跳过前置零来读取该整数,直到遇到非数字字符或到达字符串的结尾。返回整数作为最终结果。原创 2025-03-13 13:52:00 · 204 阅读 · 0 评论 -
【算法day8】整数反转
【代码】【算法day8】整数反转。原创 2025-03-13 00:13:12 · 285 阅读 · 0 评论 -
【算法day8】 Z 字形变换 -O(n)算法思路整理
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。Z 字形变换,算法思路整理。原创 2025-03-12 23:18:03 · 194 阅读 · 0 评论 -
【算法day8】 Z 字形变换 (O2算法思路整理2)
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。Z 字形变换,算法思路整理。原创 2025-03-12 10:21:33 · 244 阅读 · 0 评论 -
【算法day7】 Z 字形变换 (O2算法思路整理)
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。Z 字形变换,算法思路整理。原创 2025-03-11 22:59:00 · 273 阅读 · 0 评论 -
【算法day6】Z 字形变换
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。【算法day6】 Z 字形变换。原创 2025-03-11 03:29:50 · 230 阅读 · 0 评论 -
【算法day5】最长回文子串——马拉车算法
给你一个字符串 s,找到 s 中最长的 回文 子串。原创 2025-03-09 19:16:27 · 249 阅读 · 0 评论 -
【算法day5】最长回文子串——中心拓展方法
【代码】【算法day5】最长回文子串——中心拓展方法。给你一个字符串 s,找到 s 中最长的 回文 子串。原创 2025-03-09 05:32:11 · 206 阅读 · 0 评论
分享