随笔分类 - 算法AC
摘要:一、在做编译原理龙书3.4节的课后习题的时候,看到了关于KMP的介绍,则再次了解了下next失效函数的构造过程和字符串的匹配过程 1、关键的求next过程的概念:求公共最长匹配前缀和后缀的长度。具体可以参考该博文:https://blog.csdn.net/qq_37174526/article/d
阅读全文
摘要:题目大意:给定n个区间和m个查询;各个查询的值落在n个区间中最短的区间的长度,没有该区间返回负一 该问题很直观的思路是使用离线的方法 1、由于需要求的是最短区间的长度,则使用区间长度作为key进行存储各个区间;从小到达排序n个区间和m个查询 复杂的编码: class Solution { publi
阅读全文
摘要:long long myPow(long long x, int n) { long long ans = 1; while(n){ if(n % 2 != 0){ ans *= x; ans %= modN; } x *= x; x %= modN; n /= 2; } return ans; }
阅读全文
摘要:如下二分的模板 int binaryL(vector<int>& nums, int val) { int left = 0; int right = nums.size(); while (left < right) { int mid = (left + right) / 2; if (cond
阅读全文
摘要:归并排序的特点是左右两个已经排好序的子数组进行合并成更大的数组的一个过程 void Merge(int left, int right) { int mid = (left + right) / 2; int i = left; int j = mid; int index = left; whil
阅读全文
摘要:最长回文子串O(n^2)的动态规划方程 用f[x][y] 表示从字符串下标x到下标y的回文长度 那么如果要求连续的回文子串则如果s[x] != s[y] f[x][y] = 0; 如果相等则 如果f[x+1][y-1] > 0 则f[x][y] = f[x+1][y-1] + 2 由于这里出现了x+
阅读全文
摘要:int FindFather(vector<int>& nums, int father) { if (father == nums[father]) return father; return nums[father] = FindFather(nums, nums[father]); } voi
阅读全文
摘要:这道题的意思是往字符串前面添加字串,使得整个字符串是回文串; 第一种方法: 既然是回文串,那么最先想到的是最长回文子串。最长回文子串的pat是pat[index] 代表以index为中点左右两边最长的回文串。 那么如果pat[index] == index说明从起始点到该点再加上index是回文串的
阅读全文
摘要:全排列数组 为了得到最快的速度和最小的空间;先计算结果需要容纳多大的数组; int GetCMN(int m, int n) { if (n == m || n == 0) return 1; int mm = 1; n = m -n > n?n:m-n; for (int i = 1; i <=
阅读全文
摘要:这道题跟leetcode的第10道题差不多;都是用差不多相同的思想解题。 当为?或者p1 == s1 的时候,则dp[p1][s1] = dp[p0][s0] 当为*的时候,则dp[p1][s1] = dp[p1][s0] | dp[p0][s0] | dp[p0][s1]; 因为,此时p1可以等于
阅读全文
摘要:Input: s = "barfoothefoobarman", words = ["foo","bar"] Output: [0,9] 这道题给定的words中的单词长度都是一样的,从连续的s子字符串中找出words中的所有单词,并且words中对应的连续的s是不能重叠的,words的顺序可以打乱
阅读全文
摘要:字符串匹配问题; 1、用暴力的方法解决。 通过搜索的方式,将每一种可能都列出来; a*或.*的时候,分三路:1、s中没有匹配到,p直接右移两位继续递归搜索;2、s中有匹配到一个a,s右移一位,p右移两位继续递归搜索;3、s中有匹配到一个,p继续用a*继续匹配s接下去的字符,则s右移一位,p不右移继续
阅读全文
摘要:这道题要求两个有序数组,找出中间位置的平均值; 解题思路: 1、取A数组的中间位置mid的值key,去B数组中查找最靠近key且小于等于key的位置index; 2、将原数组切成三段,index和mid之前数组的为新的left数组;right1跟right2为新的right数组;mid到right1
阅读全文