随笔分类 -  算法知识点总结

算法知识汇总
摘要:搜索解空间: 1、约束条件: 只要第t个结点和前t-1个结点中被选中的结点都有边相连,则放入团中,否则不能放入 2、限界条件: 当第t个结点不能放入团中时,要判断假设下面的n-t个结点全放入团中加上当前以及放入的结点cn个的和:cn+n-t是否大于最优值bestn,若大于,则有必要继续搜索; 若小于 阅读全文
posted @ 2020-11-13 20:47 nilbook 阅读(235) 评论(0) 推荐(0)
摘要:快排(QuickSort)思想: 基于分治法的思想: 1、分解:从数列中取出一个元素作为基准元素,将问题分解为两个子序列列,左子序列都小于基准元素,右子序列都大于 2、治理:对两个子序列进行快速排序。 3、合并:将排序后的子序列进行合并,得到原问题的解 时间复杂度:平均情况:O(nlogn) 空间复 阅读全文
posted @ 2020-11-05 18:03 nilbook 阅读(88) 评论(0) 推荐(0)
摘要:本题利用dfs将一整座岛屿找出来,所以我们每在首函数里调用一次dfs函数,就是一座新岛屿,岛屿数量加1 在dfs函数里运用“感染”一词来寻找相连的区域 1 class Solution { 2 public: 3 int ans=0; 4 int numIslands(vector<vector<c 阅读全文
posted @ 2020-10-09 23:13 nilbook 阅读(174) 评论(0) 推荐(0)
摘要:dfs是最广泛的搜索算法,通俗讲就是:一条路走到黑,通过暴力枚举,将所有可能的情况一一枚举,不断地试探来找到解 对每一个可能的分支路径深入到不能再深入,而且每个顶点只访问一次。 dfs一般借助递归来实现: 1 void dfs(int deep){ 2 if(到达边界){ 3 //做一些处理后返回 阅读全文
posted @ 2020-10-09 22:48 nilbook 阅读(219) 评论(0) 推荐(0)
摘要:当数据量很大时,我们不能一个一个去判断每个数是否为素数,那么我们可以采用欧拉筛来做 由于埃氏筛会存在某个合数多次被筛的情况,所以 欧拉筛的核心思想就是:让每个合数只被它的的最小质因子筛选一次,没有重复 欧拉筛:时间复杂度为O(n),所以也称为线性筛,但只能筛到1e8这么大 1 const int m 阅读全文
posted @ 2020-10-06 19:58 nilbook 阅读(1542) 评论(0) 推荐(0)
摘要:memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组c:是赋给buffer的值count:赋值buffer中的位数 memset是以字节为单位,初始化内存块。 当初始化一个字节单位的数组时,可以 阅读全文
posted @ 2020-08-05 18:46 nilbook 阅读(910) 评论(0) 推荐(0)
摘要:深度优先搜索,简称DFS,算是应用最广泛的搜索算法,属于图算法的一种,dfs按照深度优先的方式搜索,通俗说就是“一条路走到黑”,dfs是一种穷举,实质是将所有的可行方案列举出来,不断去试探,知道找到问题的解,其过程是对每一个可能的分支路径深入到不能再深入为止,且每个顶点只能访问一次。 dfs一般借助 阅读全文
posted @ 2020-08-05 18:43 nilbook 阅读(748) 评论(0) 推荐(0)
摘要:1.功能一致 都是将实际值为int类型的String类型转换成整型 Integer integer=Integer.valueOf("23"); int i=Integer.parseInt("56"); 2.区别: valueOf方法是得到的Integer包装类,而parseInt得到的是int基 阅读全文
posted @ 2020-08-04 11:57 nilbook 阅读(717) 评论(0) 推荐(0)