![](https://img-blog.csdnimg.cn/b648668896c340efa1044c1344e2027c.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法刷题
文章平均质量分 63
算法刷题
Milk_exe
风生水起,全靠自己!
展开
-
动态规划的题型总结
很久之前做的笔记,笔记放不下了,先放在csdn吧,以后有空重新提高下质量…原创 2023-03-13 17:00:50 · 102 阅读 · 0 评论 -
算法题可能会用到数学知识(长期更新~)
很久以前刚开始刷算法题时记录下来的一些数学知识,这些不太成体系的知识放在笔记里有点碍眼,放上来当笔记吧。长期更新~(虽然可能会忘掉)原创 2023-03-13 16:44:24 · 69 阅读 · 0 评论 -
76.最小覆盖子串-LeetCode
题目链接方法一 双指针滑动窗口算法思想:利用双指针构造一个滑动窗口,滑动窗口在不断移动的过程中找到最短的包含字符串t中字符的子串。滑动窗口通过右指针来扩展,每次向右移动一次,完成窗口的扩展,并且检查此时窗口内是否包含了字符串t中所有字符。i. 如果包含,那么考虑从窗口左侧窗口减小窗口大小以求得最小子串;ii. 如果不包含,那么继续向右扩展;滑动窗口规模缩减,左侧指针不断右移,随着窗口规模每减小1,如若当前窗口仍然包含字符串t中所有元素,那么说明当前窗口的子串符合要求,应同之前的子串长度作比较原创 2021-12-11 19:57:50 · 399 阅读 · 0 评论 -
75.颜色分类-LeetCode题解
文章目录方法一 计数排序方法二 单指针(两趟遍历)方法三 双指针(同向)方法四 双指针(相向)题目链接方法一 计数排序算法思想:利用计数排序分别统计0,1,2出现的次数,然后根据次数数组向nums数组中按0,1,2出现次数重新写入。C语言实现void sortColors(int* nums, int numsSize){ int array[3] = {0}; for(int i = 0; i<numsSize; ++i){ switch(nums[i]原创 2021-12-10 17:18:13 · 766 阅读 · 0 评论 -
15.三数之和-LeetCode 题解
文章目录1. 方法一 哈希表1. 方法一 哈希表算法思想:利用类似于T1-twoSum哈希表的方法求取三元组。通过第一重循环固定第一个元素a,从而在内部求取两个数b,c,使得b+c = target,内部就转换成了T1两数之和的问题。时间复杂度为T(n)=O(n^2)该方法值得注意的几个点:由于题目要求类似于[a,b,c]或者[b,a,c]的情况不得重复出现,同时要满足a<b<c,因此在遍历之前首先要对数组进行排序,时间复杂度位O(n^2)。在第一层循环时,如果当前的元素nums原创 2021-12-04 23:05:59 · 485 阅读 · 0 评论 -
1.两数之和-LeetCode题解
1.两数之和-LeetCodeC语言C++算法思想:在遍历的过程中利用哈希表记录已经存在的数据,每次遍历到一个新的元素a,都向前寻找target-a这个元素是否存在(利用哈希表,从而避免了二重循环遍历查找target-a),由此将时间复杂度降低到O(n)。当然随之而来付出的代价即是空间复杂度增加。C语言/** * Note: The returned array must be malloced, assume caller calls free(). */struct HashTable原创 2021-12-04 21:24:14 · 216 阅读 · 0 评论 -
第9题 回文数
第9题 回文数解法一:数字转化为字符串,验证是否是回文代码:class Solution: def isPalindrome(self,x:int)->bool: return (str(x)==str(x)[::-1])解法一进阶:数字转化为字符串,比较字符串的前半段和后半段代码:class Solution: def isPalindrome(self,x:int)->bool: s = str(x); .原创 2020-06-27 09:02:35 · 218 阅读 · 0 评论 -
第100题 相同的树——树的前序递归遍历
二叉树数据结构定义struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};我的代码:bool isSameTree(TreeNode* p, TreeNode* q) { if (p == NULL && q == NULL) { // 当前两树的根节点均为空原创 2020-06-27 14:55:07 · 127 阅读 · 0 评论 -
有向图强连通分量的Tarjan算法
见原文链接转载 2020-04-21 15:16:30 · 192 阅读 · 0 评论 -
机试用到的数学知识和技巧
裴蜀定理:说明了对于任何整数a,b和他们的最大公约数d=gcd(a,b),关于未知数x,y的线性不定方程。即若a,b是整数,且d=gcd(a,b),那么对于任意整数x,y,ax+by都一定是d的倍数。由此可知,一定存在x,y,使ax+by=d成立,即ax+by=d一定有解。重要推论:a,b互质的充要条件是存在整数x,y,使ax+by=1。扩展欧几里得定理:对于不完全为 0 的整数 a,b,gcd(a,b)表示 a,b 的最大公约数。那么一定存在整数 x,y 使得 gcd(a,b)=ax+by。 ..原创 2020-05-27 18:05:39 · 136 阅读 · 0 评论 -
《王道机试指南》刷题总结
《王道机试指南》刷题总结第一章(略)第二章 暴力求解第三章 排序与查找第四章 字符串第五章 数据结构一第六章 数学问题第七章 贪心策略第八章 递归与分冶第九章 BFS和DFS(略)第十章 数据结构二第十一章 图论第十二章 动态规划第一章(略)第二章 暴力求解习题2.1 注意审题,给的是有关的概念,求的是无关的平方和;习题2.2 注意审题,强调总的购买数是100只,并不在意是否要尽可能花光给的钱;习题2.10 路径打印:多叉树的插入和遍历习题2.11 思路分析:坠落的蚂蚁第三章 排序与查找原创 2020-05-27 17:53:29 · 1021 阅读 · 0 评论 -
上海交大2019考研机试第一题:以时间复杂度为nlogn的算法解决最长公共子序列(LCS)问题
给出两个数字序列,求最长公共子序列(LCS)。 保证一个序列中所有元素都不重复,第一行给定一个n 为序列的长度,第二第三行为两个序列。其中 60% 的用例 n<=1000,所有用例保证 n<= 1000000Sample Input51 2 3 4 51 2 3 4 5Sample Output5Sample Input51 2 3 5 41 2 3 4 5...原创 2020-04-04 13:21:25 · 620 阅读 · 2 评论 -
动态规划:最长递增子序列问题(LIS)的时间复杂度由O(n^2)降低为O(nlogn)的改良算法的自我理解
问题:原算法的时间复杂度为n^2,如何降低其时间复杂度?着眼点:原算法在计算每一个dp[i]时都需要将前序所有dp[i]遍历一遍才能获得当前的dp[i],如何减少这种遍历?解决方法:本算法原理:在原算法中,每接触到一个新元素时,我们考虑以它为结尾的最长递增子序列长度是不会考虑前面元素具体的分布的,即哪些元素是构成LIS的,哪些不是,我们只是记录了长度,而事实上这种分布可以帮助我们统计后...原创 2020-04-04 10:35:19 · 703 阅读 · 0 评论 -
为什么贪心策略不能用于解决0-1背包问题?
新人求赞啊!(●'◡'●)一般会使用的贪婪准则:价值vi,质量wi,每一项计算ri=vi/wi,即价值和质量之比,再按比值的降序来排序,从第一项开始装背包,然后是第二项,依次类推,尽可能的多放,直到装满背包。反例:这种策略并不能保证得到最优解。利用此策略试解n= 3 ,w=[40,35,35], v=[40,30,20], c=70 时的最优解。直觉上它可能是对的,得到的结果是选择w[0]=...原创 2020-03-27 11:47:05 · 6740 阅读 · 2 评论 -
关于王道机试指南习题11.6(牛客网考研真题) 上海交通大学复试上机题解:最短路径
关于王道机试指南习题11.6 上海交通大学复试上机题解:最短路径 之前存在的问题:当专门为大数定义一个结构体时,那么在新的结构体内无法利用大数的结构体内已经重定义的运算符;两个思路:思路一:以字符串存储大数,如此在Edge和Point的结构体内就可以利用字符串的比较规则;由于字符串比较是按字典序比较,为了保证两个大数能够直接比较,必须要让所有大数的位数相同,如此才能直接比较。否则会...原创 2020-03-24 16:31:44 · 449 阅读 · 0 评论 -
关于结构体内嵌比较函数后,sort排序和优先队列内元素的顺序
#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <queue>using namespace std;const int MAX = 1000;struct Node_t { int val; Node...原创 2020-03-14 12:34:09 · 251 阅读 · 0 评论 -
北京大学复试上机 坠落的蚂蚁(牛客网)王道机试指南习题2.11
北京大学复试上机 坠落的蚂蚁(牛客网)王道机试指南习题2.11思路解析:推论一:首先确定:树枝上最初向左的蚂蚁数量和向右的蚂蚁数量在整个蚂蚁移动过程中是动态平衡的,亦即:任何时候向左(右)的蚂蚁数量都等于最初向左(右)移动的蚂蚁数量;原因:每当有两个蚂蚁碰头时,他们交换了速度,也就是交换了移动方向,也就是向左移动这个状态不过从一个蚂蚁转移到了另一个蚂蚁,另一个蚂蚁向右移动的状态转移到了...原创 2020-02-29 22:11:35 · 1698 阅读 · 0 评论