
算法
那是真的牛皮
这个作者很懒,什么都没留下…
展开
-
11. 盛最多水的容器
11. 盛最多水的容器11.1题目大意给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为原创 2022-01-27 16:16:43 · 118 阅读 · 0 评论 -
10正则表达式匹配
10. 正则表达式匹配10.1题目大意给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。输入:s = "aa" p = "a"输出:false解释:"a" 无法匹配 "aa" 整个字符串。输入:s = "aa" p = "a*"输出:true解释:因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素原创 2022-01-27 16:02:33 · 491 阅读 · 0 评论 -
9. 回文数
9. 回文数9.1题目大意求是不是回文数easy题目,直接变成字符串,然后再一个翻转就可以判断9.2代码实现class Solution {public: bool isPalindrome(int x) { string s =to_string(x); string a=s; reverse(s.begin(),s.end()); return s==a; }};...原创 2022-01-27 15:18:55 · 5214 阅读 · 0 评论 -
8.字符串转换整数 (atoi)
8. 字符串转换整数 (atoi)8.1题目大意请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将原创 2022-01-27 15:13:44 · 120 阅读 · 0 评论 -
7. 整数反转
7. 整数反转7.1题目大意给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。输入:x = 123输出:3217.2题目思路yxc套路题,对x进行取模,并且x10相加核心while(x){ r=r*10+x%10; x/=10; }7.3代码实现原创 2022-01-27 15:06:15 · 284 阅读 · 0 评论 -
5.最长回文子串
5. 最长回文子串5.1题目大意给你一个字符串 s,找到 s 中最长的回文子串。输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。5.2题目思路通过中心扩散来计算,就是遍历i,设置左右两个j,k,看左右两个jk是否相等,相等就j–,k++注意,考虑是奇偶行如果为奇数 j=i-1,k=i+1如果是偶数j=i,k=i+1,最后更新ans,比较大小5.3代码实现class Solution {public: string longestPa原创 2022-01-27 14:53:42 · 490 阅读 · 0 评论 -
3.无重复字符的最长子串
3.无重复字符的最长子串3.1题目大意给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。3.2题目思路这一个题目使用滑动窗口,首先让i,j都在0点,使用i一直往前走,同时用hash记录s【i】的次数,如果次数s【i】大于1,说明i,j这一段有重复的,那么就把j往后移,直到s【i】为1,同时更新最大长度其实就是一个队列,比如例题中的 abcabcbb,进入这个原创 2022-01-27 14:38:15 · 114 阅读 · 0 评论 -
pat1043
pat10431.题目大意给定一个前序序列,来进行判断是否完全二叉树。2.思路对整个序列进行排序,因为完全二叉树中序遍历就是排好序了的。所以我们根据前序和中序看是否能够建树,如果不行,那就对前序进行翻转,再次重建,看是否可以,如果还是不行,那么就是真的无法建树。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ivfbAMN3-1639230724755)(https://files.catbox.moe/zxdj23.png)]建树过程,如果是正常的,那就是正常建树原创 2021-12-11 21:52:24 · 371 阅读 · 0 评论 -
pat1021
pat10211.题目大意求无向图的最大深度,如果不是树,那么就输出联通分量。记录使用之前的add函数来加边,由于是无向图,需要两边都加同时,使用dfs来进行统计树的高度,还有一件事,就是因为是无向图,所以,要避免自己再次出现。int dfs(int u,int father){// 由于是无向图,难免会把自己加入的,father是自己,就需要跳过 int depth =0; for (int i = h[u]; ~i; i = ne[i]) { i原创 2021-12-11 21:12:16 · 417 阅读 · 0 评论 -
pat1020
pat10201.题目大意给定中序和后序遍历,让你重建二叉树。并且输出层序遍历2.思路这题使用左右数组来记录左右子孩子的下标,然后,使用queue来进行层序输出。建树过程如下,首先找到根节点,根节点就在后续遍历的最后一个,接着,中序遍历的两个就是左右子树,然后递归进行建树。note:同时可以使用map来进行加快索引,既可以记录这个值所在的下标int build(int il,int ir,int pl,int pr){// 建树 int root =post[pr];原创 2021-12-11 20:45:59 · 185 阅读 · 0 评论 -
pat1004
pat10041.题目大意给定一棵树,输出每一层的叶子节点。由于不是普通的二叉树,有可能一个父节点有多个子节点。所以使用灵界表法进行输出。2.思路使用dfs,进行统计层数,每一层都进行加一。使用灵界表,需要e,ne,h三个数组,h数组全部都是-1.还有一个add,就是添加子节点。使用idx进行来检索e【idx】=b,ne【idx】=h【a】,h【a】=idx++。必备代码void add(int a, int b){ e[idx] = b, ne[idx] = h[a], h[a]原创 2021-12-11 20:25:26 · 121 阅读 · 0 评论 -
798.二维差分
798.二维差分1.题目大意输入一个n行m列的整数矩阵,再输入q个操作,每个操作包含五个整数x1, y1, x2, y2, c,其中(x1, y1)和(x2, y2)表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上c。请你将进行完所有操作后的矩阵输出。输入格式第一行包含整数n,m,q。接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每行包含5个整数x1, y1, x2, y2, c,表示一个操作。输出格式共 n 行,每行 m 个整数,表示所有原创 2021-10-12 21:25:58 · 85 阅读 · 0 评论 -
797. 差分
797. 差分1.题目大意输入一个长度为 nn 的整数序列。接下来输入 mm 个操作,每个操作包含三个整数 l,r,cl,r,c,表示将序列中 [l,r][l,r] 之间的每个数加上 cc。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数 nn 和 mm。第二行包含 nn 个整数,表示整数序列。接下来 mm 行,每行包含三个整数 l,r,cl,r,c,表示一个操作。输出格式共一行,包含 nn 个整数,表示最终序列。数据范围1≤n,m≤1000001≤n,m≤100000,原创 2021-10-12 20:50:18 · 375 阅读 · 0 评论 -
[剑指 Offer 51. 数组中的逆序对]
剑指 Offer 51. 数组中的逆序对1.题目在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2.思路本题来自acwing思路传统的原创 2021-09-28 22:12:48 · 164 阅读 · 0 评论 -
acwing786-第k个数
acwing786-第k个数1.题目给定一个长度为 nn 的整数数列,以及一个整数 kk,请用快速选择算法求出数列从小到大排序后的第 kk 个数。输入格式第一行包含两个整数 nn 和 kk。第二行包含 nn 个整数(所有整数均在 1∼1091∼109 范围内),表示整数数列。输出格式输出一个整数,表示数列的第 kk 小数。数据范围1≤n≤1000001≤n≤100000,1≤k≤n1≤k≤n输入样例:5 32 4 1 5 3输出样例:32.思路题目让选择使用快速选择原创 2021-09-28 22:11:47 · 188 阅读 · 0 评论