• 2025-01-06leetcode 热题100(32. 最长有效括号)栈 c++
    链接:32.最长有效括号-力扣(LeetCode)给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例1:输入:s="(()"输出:2解释:最长有效括号子串是"()"示例2:输入:s=")()())"输出:4解释:最长有效括号子串是"()()"示例3:输入:s=""
  • 2025-01-02最长上升子序列的优化求法和Dilworth定理
    最长上升子序列的优化求法和Dilworth定理最长上升子序列学过DP的都知道,求最长上升子序列的DP做法的时间复杂度是\(O(n^2)\)的,现在介绍一个\(O(n*\logn)\)的二分做法二分做法352371一组原始数据,最长上升子序列的长度应该是3,为序列237使用队列q,先把第一个元素放进去
  • 2024-12-3124年收尾之作------动态规划<六> 子序列问题(含对应LeetcodeOJ题)
    目录引例 经典LeetCodeOJ题1.第一题 2.第二题3.第三题  4.第四题5.第五题 6.第六题 7.第七题引例OJ传送门LeetCode<300>最长递增子序列画图分析:使用动态规划解决1.状态表示dp[i]表示以i位置元素为结尾的子序列中,最长递增子序列的长度2.状态表示 
  • 2024-12-27最长公共子序列 题目
    题解暂无,求指导试题描述给定两个小写字母组成的字符串S,T(长度不超过100),问S与T的最长公共子序列。输入要求第一行一个字符串,表示字符串S。第二行一个字符串,表示字符串T。输出要求第一行,输出最长公共子序列的长度。第二行,输出一个字符串,表示最长的公共子序列,答案可能不止一
  • 2024-12-26128. 最长连续序列
    题目链接解题思路:难点在于时间复杂度O(n),如果直接排序,题目就简单了。但是不需要全部有序,只需要每次从其中拿出一个数,是递增的即可,也就是说,使用优先级队列,堆头是最小值。注:该方法仍然是O(n*logn)代码classSolution:deflongestConsecutive(self,nums:List[int])-
  • 2024-12-25401 最长回文子串
    //401最长回文子串.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///*http://oj.daimayuan.top/course/22/problem/933给你一个字符串s,字符串由小写字母组成,现在你需要求出s中最长的回文子串的长度。输入格式一行一个字符串s。输出格式输出一个整
  • 2024-12-23最长上升子序列
    最长上升子序列给定一个长度为 NN 的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数 NN。第二行包含 NN 个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤10001≤N≤1000,−109≤数列中的数≤109−109≤数列中的数≤
  • 2024-12-21更快的LIS
    二分优化LIS即:在一个序列中找到一个最长的严格递增子序列的长度实现:F[i]:储存长度为i的最长上升子序列的末尾元素值cnt:储存当前最长上升子序列的长度从前至后遍历数组,如果A[i]大于当前的最长上升子序列的末尾元素值,将A[i]纳入此子序列中。如果A[i]小于等于当前的最长不下
  • 2024-12-18动态规划子序列问题系列一>最长定差子序列
    题目:  解析:   代码:publicintlongestSubsequence(int[]arr,intdifference){//直接创建一个dp表,直接在这个hash表里做动态规划Map<Integer,Integer>hash=newHashMap<>();intret=1;//hash里绑定<x,dp[i]>
  • 2024-12-1814. 最长公共前缀
    题目链接解题思路:用第一个字符串的每个字符,逐个比较其他字符串,注意别越界就行代码classSolution{public:stringlongestCommonPrefix(vector<string>&strs){stringans="";intlen=strs[0].length();intn=strs.size();
  • 2024-12-17最长连续序列
     给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例1:输入:nums=[100,4,200,1,3,2]输出:4解释:最长数字连续序列是[1,2,3,4]。它的长度为4。示例2:输入:nums
  • 2024-12-16动态规划子序列问题系列一>最长数对链
    题目:  解析:  代码: publicintfindLongestChain(int[][]pairs){Arrays.sort(pairs,(a,b)->(a[0]-b[0]));intn=pairs.length;int[]dp=newint[n];for(inti=0;i<n;i++)dp[i]=1;intret=1;
  • 2024-12-165. 最长回文子串
    题目链接解题思路:最长回文子串问题,首先要将原字符串扩充,比如abba,暴力是以每个字符s[i],左右两边扩,如果是abba,得不到最优解,扩充成#a#b#b#a#,就不会有问题,最优解是manacher算法。假设s[i]扩充的区域是[x,y],是目前便利到的,最远的距离,我们称i为回文中心C,y为回文最远右边界R,同时,
  • 2024-12-163. 无重复字符的最长子串
    题目链接解题思路:最长子串问题,考虑,以i开头的结果如何,以i结尾的结果如何,最终结果必定在其中。本题使用以i开头的结果如何,我们求出所有的「以i开头的最长子串」,再求出最长的即可。求「以i开头的最长子串」,最简单的暴力即可,那么怎么加速呢?我们在求「以i-1开头的最长子长串时
  • 2024-12-11编程题-最长公共前缀
    题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例1:输入:strs=["flower","flow","flight"]输出:"fl"示例2:输入:strs=["dog","racecar","car"]输出:""解释:输入不存在公共前缀。解题:依
  • 2024-12-11代码随想录算法训练营第四十三天|LeetCode300.最长递增子序列、LeetCode674.最长连续递增序列、LeetCode718.最长重复子数组
    前言打卡代码随想录算法训练营第49期第四十三天 (๑ˉ∀ˉ๑)首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站卡哥B站账号、代码随想录官方网站代码随想录了解,卡哥清晰易懂的算法教学让我直接果断关注,也十分有缘和第49期的训练营大家庭一起进步。LeetCode300
  • 2024-12-093. 无重复字符的最长子串
    给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1:输入:s="abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所以其长度为3。示例2:输入:s="bbbbb"输出:1解释:因为无重复字符的最长子串是"b",所以其长度为1。
  • 2024-12-06leetcode3288 最长上升路径的长度
    给定长度为n的二维数组{x[i],y[i]}和一个整数k,其中0<=k<n,从中选中若干个点排序构成序列,求最长的点序列满足x[i]<x[i+1]并且y[i]<y[i+1],要求第k个点必须选择,返回最长序列的长度。1<=n<=1E5;0<=x[i],y[i]<=1E9;各个点互不相同分析:可以拆分成如下几个子任务:(1)求一维数组的lis的长度
  • 2024-12-01从“找三角形”讲“等腰三角形”
    【题目】周长为11,且各边长均为整数的三角形有哪些?【答案】四种,边长分别为:245335155344【解析】讲解等腰三角形的概念时,传统方法一般向学生展示一个等腰三角形的实物模型,这种方法很直观,学生也很容易理解。但是这种方式本质上是一种“告知”的教授方式,学生在学
  • 2024-11-29洛谷P1807 最长路
    洛谷P1807最长路#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintinf=-1e6;constintmaxx=2550005;intn,m,head,tail,g[1505][1505],q[maxx];intdp[1505];boolflag[1505];//flag记录点是否在队内signedmain(){ cin>>n>>m; f
  • 2024-11-28算法日记 35 day 动态规划
    今天都是些比较简单的题,看看题目吧。题目:最长递增子序列300.最长递增子序列-力扣(LeetCode)给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,
  • 2024-11-27异或最长路(线性基应用)
    首先异或最长路不能用Bellman-Ford,因为异或不满足加法传递性,局部最优可能推不出整体最优,而且可能出现类似“负环”的情况,走不出来。一般要用线性基解决这一类问题。我们可以把路径拆成一条链(蓝色)和若干个环(灰色)。我们可以走一条红色的路径到达一个环,转一圈然后原路返回,这样红色
  • 2024-11-26最长回文字串习题分析
    习题:(leetcode5)给你一个字符串 s,找到 s 中最长的 回文子串。回文字串:子字符串 是字符串中连续的 非空 字符序列。分析:可以先创建一个回文判断函数(isPalindrome),对于一个回文字串将第一个元素和最后一个元素删去后剩余的字串仍是回文字串。使用双重循环进行遍历,找到
  • 2024-11-25KMP与Lca应用——最长公共border
    问题提出给定你一个字符串,有\(n\)次询问,每次给出两个数\(a\),\(b\),希望求出该字符串以\(a\),\(b\)下标结尾的两段前缀的最长公共\(border\)。(一个字符串的\(border\)同时为其后缀与前缀)初步分析首先我们需要考虑一个字符串的最长\(border\)求法,毕竟需要求的是两字符串的最长公
  • 2024-11-25最长公共子序列
    前言顾名思义:a,b串删去一些字符后得到的相同字串模板#include<bits/stdc++.h>usingnamespacestd;#defineN1000005intn,m;chara[N];charb[N];intdp[1000][10000];intx[N],y[N];intmain(){cin>>n>>m;for(inti=1;i<=n;i++){cin&g