
算法刷题集锦
文章平均质量分 60
用于保存平时某些个人认为值得记录的题型
三木ぃ
自己的学习笔记
展开
-
C++算法集锦:图论
图论最小生成树最小生成树牛客连接: 最小生成树解法1思路:kruskal算法+并查集利用kruskal的思想,每次选择最短的路径,加入到候选集和中,从而最终连通整个图。这里同时采用并查集的思想,每次将一条对一条候选路径进行选择的时候,判断两个端点是否拥有共同父亲,如果拥有则表明这两个点之间已经存在被加入候选集合中了,放弃这条边;如果没有拥有共同父亲,则将两个点连接,即指定一个点为另一个点的父亲,并且选择这条边加入连通图。最终,判断完所有的路径。class Solution {publ原创 2022-05-06 12:51:46 · 1862 阅读 · 0 评论 -
C++算法集锦:动态规划(一)
动态规划例题(一)原创 2022-05-12 20:01:01 · 920 阅读 · 0 评论 -
C++算法集锦:动态规划(二)
动态规划例题(二)原创 2022-05-19 13:03:42 · 675 阅读 · 0 评论 -
C++算法集锦:基础数学
基础数学最大公约数最小公倍数最大公约数牛客链接:NC151 最大公约数题解1:辗转相减法class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 求出a、b的最大公约数。 * @param a int * @param b int * @return int */ int gcd(int a, int b) {原创 2022-05-07 19:25:37 · 621 阅读 · 0 评论 -
C++算法集锦:二叉树的基本操作
二叉树的基本操作原创 2022-05-09 12:59:23 · 1220 阅读 · 0 评论 -
C++算法集锦:字符串操作
字符串操作的算法例题原创 2022-05-16 17:55:22 · 585 阅读 · 0 评论 -
字符串比较:KMP算法
牛客连接:KMP算法解法1:KMP算法KMP算法的核心思想就是求一个next数组,其中 next[i] = j 表示的是下标为i的字符前的字符串最长相等前后缀的长度为j。如:abab中,next[0] = 0,next[1] = 0, next[2] = 1,next[3] = 2;其中next[1]=0是最长相等前后缀为a,next[3]=2的原因是最长相等前后缀为ab;这里比较难理解的是递归求解j中的j=next[j-1]操作。当j>0且S[i]!=S[j]时,j>0表明当原创 2022-05-06 15:32:41 · 585 阅读 · 0 评论 -
C++算法集锦:位运算
位运算算法的例题这里通过位运算进行实现。首先通过一个集合,用以防止存入重复vector,最终结果拷贝到vector中即可。 然后通过位运算,一个有nums.size()位。每一位置1则表示nums中该位会被选择。class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * ...原创 2022-05-08 19:31:35 · 588 阅读 · 0 评论 -
C++算法集锦:栈(一)
栈相关算法练习题原创 2022-06-15 10:53:22 · 105 阅读 · 1 评论 -
LeetCode刷题:42.接雨水
题目要求给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例示例1输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组[0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例2输入:height = [4,2,0,3,2,5]输出:9提示n == height.length1 <= n <原创 2021-11-04 14:02:57 · 211 阅读 · 0 评论 -
LeetCode数组系列:多数元素
LeetCode数组系列乘积最大子数组乘积最大子数组题目要求:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入:[3,2,3]输出:3示例2:输入:[2,2,1,1,1,2,2]输出:2进阶尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。题解思路:由于是多数元素,则相较于其他元素,它存在的次数总和一定是大于其原创 2021-10-10 13:39:09 · 129 阅读 · 0 评论 -
LeetCode数组系列:乘积最大子数组
LeetCode数组系列乘积最大子数组乘积最大子数组题目要求:给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积 。示例1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。题解思路1:对于整个数组,我们可以构原创 2021-10-09 14:45:11 · 610 阅读 · 0 评论 -
字符串系列:反转字符串
要求编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。示例输入:s = ["h","e","l","l","o"]输出:["o","l","l","e","h"]输入:s = ["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]提示1 <= s.length <= 105s[i] 都是原创 2021-09-29 19:41:29 · 174 阅读 · 0 评论 -
LeetCode刷题:字符串中的第一个唯一字符
题目要求:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = "leetcode"返回 0s = "loveleetcode"返回 2提示:提示:你可以假定该字符串只包含小写字母。解答:思路:这里通过建立一个字典数据,在一遍遍历字符串s的同时,保存其下标索引,并且如果重复,将其字典值置位-1,最终只需查找出字典中第一个值为非-1的key即可。class Solution: def firstUniqChar(sel原创 2021-09-28 19:42:30 · 157 阅读 · 3 评论