算法-S级午休一题
算法SQL-S级
74efa5w1f2315qw41f
多讨论、多实践、多传授!
展开
-
数据结构与算法
一、绪论1、基本概念数据结构术语数据、数据元素、数据项、数据对象、数据类型、数据结构数据结构三要素1、逻辑结构:2、存储结构:顺序存储链式存储索引存储散列存储3、运算2、算法评价算法基本概念基本特征: 有穷性、确定性、可行性、输入、输出“好算法”的性质: 正确性、可读性、健壮性、效率与低存储需求算法度量时间复杂度:空间复杂度:二、线性表1、定义、基本操作定义:L=(a1,a2,a3…,ai,ai+1,…,an)a1表头元素an表尾元素基本操作:Init原创 2021-08-08 08:52:57 · 91 阅读 · 0 评论 -
动态规划总结
5. 最长回文子串(中等)题目给你一个字符串 s,找到 s 中最长的回文子串。思路for 依次遍历字符串: 向左扩展直到字符不同,l-1>=0 向右扩展直到字符不同,r+1<=len(s)-1 (保证中间的字符一样) l-1>=0 and r+1<=len(s)-1 and s[l-1]==s[r+1] (保证左右字符相同) 如果 回文长度>max: 记录 l max return s[l:l+max]代码###Pythoncl原创 2021-08-16 11:21:33 · 71 阅读 · 0 评论 -
hot100_62不同路径
dp[i][j] 可以分为 dp[i-1][j] + dp[i][j-1],dp[i][j] = dp[i-1][j] + dp[i][j-1]一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。注意:第一行dp[0][j] ,第一列dp[i][0],因为都在左边界,所以只能为1。比如,m=3, n=2,我们只要向下 1 步,向右 2 步就一定能到达终点。因为机器到底右下角,向下几步,向右几步都是固定的,令 dp[i][j] 表示到达 i,j 的最多路径。原创 2024-06-07 10:41:53 · 350 阅读 · 0 评论 -
完全平方数
完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。找f[i]的问题,可以转化为找 f[ i - j*j ]。该问题与子问题类似,符合动态规划的要求。给你一个整数 n ,返回 和为 n 的完全平方数的最少数量。f[i]表示最少需要多少个数的平方表示整数 i。之后只需要从小到大的枚举i,来推出每个f[i]。可以在区间[1,根号n]之间枚举数值 j。原创 2024-06-06 21:53:22 · 273 阅读 · 0 评论 -
LChot100_无重复字符的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。原创 2024-05-14 23:42:36 · 124 阅读 · 0 评论 -
LChot100(哈希-49. 字母异位词分组_哈希-128. 最长连续序列)
由于互为字母异位词的两个字符串包含的字母相同,因此两个字符串中的相同字母出现的次数一定是相同的,故可以将每个字母出现的次数使用字符串表示,作为哈希表的键。由于字符串只包含小写字母,因此对于每个字符串,可以使用长度为 262626 的数组记录每个字母出现的次数。需要注意的是,在使用数组作为哈希表的键时,不同语言的支持程度不同,因此不同语言的实现方式也不同。由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。原创 2024-04-28 00:10:06 · 130 阅读 · 0 评论 -
LChot100_2 两数相加
2. 两数相加(中等)一、题目给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]输出:[8,9,9,9,0,0,0,1原创 2021-08-17 14:43:28 · 78 阅读 · 0 评论 -
LChot100(中等)_3.无重复字符的最长子串
(滑动窗口)3. 无重复字符的最长子串(中等)题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度原创 2021-08-17 14:38:55 · 61 阅读 · 0 评论 -
LChot100_5 最长回文子串
5. 最长回文子串(中等)题目给你一个字符串 s,找到 s 中最长的回文子串。思路for 依次遍历字符串: 向左扩展直到字符不同,l-1>=0 向右扩展直到字符不同,r+1<=len(s)-1 (保证中间的字符一样) l-1>=0 and r+1<=len(s)-1 and s[l-1]==s[r+1] (保证左右字符相同) 如果 回文长度>max: 记录 l max return s[l:l+max]代码###Pythoncl原创 2021-08-17 14:41:28 · 65 阅读 · 0 评论 -
LeetCode(中等)_133.克隆图
133. 克隆图(中等)题目给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node { public int val; public List<Node> neighbors;}测试用例格式:简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使用邻接列原创 2021-08-17 14:45:25 · 57 阅读 · 0 评论 -
leetcode10正则表达式匹配
为便于状态更新,减少对边界的判断,初始二维 dpdpdp 数组维度为 (m+1)×(n+1),其中第一行和第一列的状态分别表示字符串 s 和 p 为空时的情况。,j]无法与空字符匹配,因此有 dp[0][j]=False;而当 p[j]=p[j]=p[j]=’显然,dp[0][0]=True。对于其他 dp[0][j],当 p[j]≠p[j]='这道题的正则匹配规则主要是 ’ * '、 ’ . ’ 这两个特殊字符的使用。'时,则有 dp[0][j]=dp[0][j−2]。总的来看,当 p[j]= '原创 2024-03-03 23:30:30 · 960 阅读 · 0 评论 -
leetcode32最长有效括号
需要注意的是,如果一开始栈为空,第一个字符为左括号的时候我们会将其放入栈中,这样就不满足提及的「最后一个没有被匹配的右括号的下标」,为了保持统一,我们在一开始的时候往栈中放入一个值为 −1的元素。2.1.如果栈为空,说明当前的右括号为没有被匹配的右括号,我们将其下标放入栈中来更新我们之前提到的「最后一个没有被匹配的右括号的下标」2.2.如果栈不为空,当前右括号的下标减去栈顶元素即为「以该右括号为结尾的最长有效括号的长度」dp[i-dp[i-1]-2]:加上这个有效括号前 紧挨着的 有效括号。原创 2024-03-10 11:56:09 · 415 阅读 · 0 评论 -
LeetCode(中等)_95不同的二叉搜索树 II
95. 不同的二叉搜索树 II(中等)题目给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。思路+代码搜索二叉树:结点>左子树的数,结点<右子树的数递归for i in range(1,n+1): 依次求左,右子树的搜索二叉树 需要递归,不断的求搜索二叉树,直到为None#Pythonclass Solution: def generateTrees(self, n:原创 2021-08-17 14:40:26 · 116 阅读 · 0 评论 -
LeetCode(中等)_96. 不同的二叉搜索树
96. 不同的二叉搜索树(中等)题目给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。输入:n = 3输出:5输入:n = 1输出:1思路+代码需要依次将每个数字当一次根节点,求其子树总和。其种类数为 = 左子树个数 * 右子树个数因为子树种类的数量有节点数决定,所以可以直接计算。不需要构建搜索二叉树。可以利用动态规划,利用 A[ i ] 求 A[ i+1 ] 。#pythonclass原创 2021-08-29 13:17:46 · 83 阅读 · 0 评论