
算法题解
文章平均质量分 73
记录平时刷题解法及心得
陈阿土i
道阻且长,行则将至;行而不辍,未来可期。
展开
-
LeetCode刷题心得之Java常用容器及方法
目录1.字符串String2. 动态数组ArrayList3. 双链表LinkedList4. 哈希表HashMap5. 哈希集合HashSet6.队列Queue7.堆栈Stack1.字符串String Modifier and Type Method and Description char charAt(int index) 返回 char指定索引处的值。 in..原创 2021-11-14 19:33:56 · 626 阅读 · 0 评论 -
【LeetCode 629】K个逆序对数组——DP动态规划+优化
一、题目给出两个整数n和k,找出所有包含从1到n的数字,且恰好拥有k个逆序对的不同的数组的个数。逆序对的定义如下:对于数组的第i个和第j个元素,如果满i<j且a[i]>a[j],则其为一个逆序对;否则不是。由于答案可能很大,只需要返回 答案 mod 109+ 7 的值。示例 1:输入: n = 3, k = 0输出: 1解释:只有数组 [1,2,3] 包含了从1到3的整数并且正好拥有 0 个逆序对。示例 2:输入: n = 3, ...原创 2021-11-11 20:45:30 · 361 阅读 · 0 评论 -
【LeetCode 10】正则表达式匹配——C++解法之动态规划(自顶向下与自底向上两种解法)
1.题目给你一个字符串s和一个字符规律p,请你来实现一个支持 '.'和'*'的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。示例 1:输入:s = "aa" p = "a"输出:false解释:"a" 无法匹配 "aa" 整个字符串。示例 2:输入:s = "aa" p = "a*"输出:true解释:因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的...原创 2021-10-09 16:33:47 · 355 阅读 · 0 评论 -
【LeetCode 516】最长回文子序列——C++解法之反向遍历DP table与斜向遍历DP table(以及两种方式的状态压缩算法)
目录一、题目二、反向遍历DP table三、斜向遍历DP table一、题目给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。示例 1:输入:s = "bbbab"输出:4解释:一个可能的最长回文子序列为 "bbbb" 。示例 2:输入:s = "cbbd"输出:2解释:一个可能的最长回文子序列为 "bb" 。提示:1 <= s.l.原创 2021-10-03 22:09:25 · 278 阅读 · 0 评论 -
【LeetCode 72】编辑距离——C++解法:自顶向下和自底向上(附打印每一步具体操作的方法)
目录一、题目二、自顶向下的解法(递归,采用备忘录)三、自底向上的解法(采用DP table)一、题目给你两个单词word1 和word2,请你计算出将word1转换成word2 所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例1:输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')rorse -> ...原创 2021-10-03 10:29:21 · 375 阅读 · 0 评论 -
【LeetCode 1143】最长公共子序列——C++利用new生成动态数组代替vector容器减少执行时间
一、题目给定两个字符串text1 和text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。示例 1:输入:text1 = "abcde", t...原创 2021-10-02 21:29:07 · 216 阅读 · 0 评论 -
【LeetCode 354】俄罗斯套娃信封问题——C++解法
LeetCode原题:给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i 个信封的宽度和高度。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算 最多能有多少个 信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。注意:不允许旋转信封。示例 1:输入:envelopes = [[5,4],[6,4],[6,7],[2,3]]输出:3解释:最多信原创 2021-09-25 23:54:10 · 755 阅读 · 0 评论