首页 > TAG信息列表 > 中前
leetcode [10. 正则表达式匹配](https://leetcode-cn.com/problems/regular-expression-matching/)
leetcode 10. 正则表达式匹配 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。 '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 示例 1: 输入:s = "aa", p = "a" 输出:falF. Rotating Substrings(dp)
F. Rotating Substrings(dp) 思路:dpdpdp,找到最大匹配数然后用nnn去减,因为每个字母最多动一次就行了。 设dp[i][j]dp[i][j]dp[i][j]为SSS串中前iii个字符和TTT串中前jjj个字符的最大匹配。 转移状态时注意因为每次操作字符往左移动,所以必须满足i≤ji\leq ji≤j,不然永远匹配不动态规划之LeetCode第72题(编辑距离)
首先先学习一个经典的算法吧,就是和本题一模一样的“编辑距离算法”。编辑距离,Minimum Edit Distance,简称MED,是俄罗斯科学家 Vladimir Levenshtein 在1965年提出,也因此而得名 Levenshtein Distance。用来度量两个序列相似程度的指标。通俗地来讲,编辑距离指的是在两个单词<w1,w2对最长公共子序列(LCS)等一系列DP问题的研究
LIS问题: 设\(f[i]\)为以\(a[i]\)结尾的最长上升子序列长度,有: \[f[i]=f[j]+1(j<i&&a[j]<a[i])\] 可以用树状数组优化至\(O(nlogn)\) 基于排列的LCS问题(\(a,b\)均为排列,即一个元素不会出现多次): 设\(pos_i\)为\(a_i\)在\(b\)中出现的位置,即\(a_i=b_pos_i\)。 \(a\)的一个子序列\(a_p_算法——得到数据流中前K大的数
用优先队列 public PriorityQueue<Integer> kthLargest(int k, int[]a) { PriorityQueue<Integer> q = new PriorityQueue<>(k); for (int i : a) { if (q.size() < k) { q.offer(i); }else {