https://leetcode-cn.com/problems/longest-increasing-subsequence/ 1、题目: 给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2 ...
分类:
其他好文 时间:
2020-07-19 23:31:12
阅读次数:
70
最长上升子序列 思路: 去过前面的数字小于当前数字,当前数字直接加入 否则 找到数组里面第一个>它的数字替换上 1 #include<bits/stdc++.h> 2 3 using namespace std; 4 int n,a; 5 vector<int> ve; 6 int main() { ...
分类:
其他好文 时间:
2020-07-19 11:44:52
阅读次数:
52
题目链接 #解题思路 马拉车当然是求最长回文既简单又快速的方法,不过这里因为要联系hash就没用马拉车了。设回文串的中心为a,b(奇回文a=b)先正着hash一遍,再倒着hash一遍,就能得到[a+len,a]和颠倒后的[b,b+len]两个子串哈希值,对比它们的哈希值就能判断两个子串是否相等,至于 ...
char * longestCommonPrefix(char ** strs, int strsSize){ char ch; int len=0, i, j; if (strsSize < 1) {return "";} len = strlen(strs[0]); for (i=1; i<st ...
分类:
其他好文 时间:
2020-07-19 00:36:29
阅读次数:
79
一句话总结差分约束 如果需要求的是两个变量差的最大值,那么需要将所有不等式转变成$<=$的形式,建图后求最短路; 如果需要求的是两个变量差的最小值,那么需要将所有不等式转化成$>=$的形式,建图后求最长路。 这是两个最基本的规则(算是吧)。差分约束的精髓就在于建图,而这玩意儿个人感觉没什么好办法,只 ...
分类:
其他好文 时间:
2020-07-17 22:22:23
阅读次数:
69
题目描述 找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。 示例: 输入: s = "aaabb", k = 3 输出: 3 最长子串为 "aaa" ,其中 'a' 重复了 3 次。 题目链接: https://leetcode- ...
分类:
其他好文 时间:
2020-07-17 22:18:30
阅读次数:
64
简述 Manacher算法,又称马拉车算法,它是用于求一个字符串的最长回文子串长度的算法,时间和空间复杂度为O(n)。 算法思想 求一个字符串的最长回文子串长度,我们如果用暴力来做,我们就要取出这个串的所有子串,然后判断这个子串是不是回文串,复杂度是n方的。 那么马拉车为何如此神奇能做到O(n)呢? ...
分类:
编程语言 时间:
2020-07-17 22:10:08
阅读次数:
116
题目来源:leetcode300 最长上升子序列 题目描述: 给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 说明: 可能会有多种最长上升子序列的组合 ...
分类:
其他好文 时间:
2020-07-17 09:30:26
阅读次数:
61
动态规划LSC——最长公共子序列 设A="a0,a1,…,am",B="b0,b1,…,bn",且Z="z0,z1,…,zk"为它们的最长公共子序列。不难证明有以下性质: 如果am=bn,则zk=am=bn,且"z0,z1,…,z(k-1)"是"a0,a1,…,a(m-1)"和"b0,b1,…,b(... ...
分类:
其他好文 时间:
2020-07-16 21:10:41
阅读次数:
46
题意:给定一个长度为n的序列,可以修改任何一个字符,求修改后最长的单调严格上升子序列(必须是连续的)。 分析:\((1 <= n < 10^5)\),数据范围很大,不能使用$o(n^2)$的算法。所以我们可以从线性角度考虑,一种常见的套路是枚举修改点,然后求最大值。我们只需要分别求出两端的情况即可, ...
分类:
其他好文 时间:
2020-07-15 23:25:08
阅读次数:
90