![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 75
srping123
这个作者很懒,什么都没留下…
展开
-
Coursera Algorithms 学习之路(一)
软件渣渣真的要发愤图强啊,保完研的日子不能荒废,把学得渣一样的数据结构和算法重新捡起来,加油啦~ 第一周的编程作业,在这里记录一下,Percolationpublic class Percolation { int[][]id; int n; public Percolation(int n) { // create n-by-n grid, w原创 2016-09-30 10:23:30 · 1741 阅读 · 0 评论 -
算法课9-dynamic programming II
背包问题串讲背包问题没有办法用贪心法得到最优解,都是通过动态规划来实现最优解。只有gold dust模型可以用贪心法得到最优解(性价比最高实现)。0-1背包问题【每个物品只可以拿一次】OPT(i, w) = max profit subset of items 1, …, i with weight limit w.它是伪多项式时间的解法,NPC问题解释看这里 0-1背包为什么有多...原创 2018-11-27 21:14:45 · 222 阅读 · 0 评论 -
算法课8-Dynamic Programming⭐️
动态规划是常考算法,将指数级的问题降到多项式级别。动态规划和分治法都是将问题划分成子问题进行求解,它们的区别主要是:分治法的子问题无重叠动态规划的子问题有重叠,并且重叠的个数是指数级别的动态规划和贪心法的相同之处是原问题包含子问题的最优解,而它们的区别在于:贪心法只看局部最优,最终达到全局最优对于动态规划局部最优不一定是全局最优1. Weighted interval ...原创 2018-11-18 10:54:16 · 346 阅读 · 0 评论 -
算法课7-Divide and Conquer
分治的思想,最经典的两个例子首先是排序的两个例子一个是快排 一个是归并排序【请看到这里的你,去复习一下排序算法】【这里填充快排和归并排序代码】...原创 2018-11-09 09:40:41 · 512 阅读 · 0 评论 -
算法课6-并查集Union Find
为了提高查找速度,三种方法:Link by sizeLink by rank(height)Path Compression并查集的典型应用:Percolation总时间限制: 1000ms 内存限制: 32768kB描述定义一个N行N列的矩阵,矩阵中的每个元素是个方格,每个方格有两种可能的状态:开通的或关闭的。初始时,所有方格都是关闭的。输入数据的每一步会指...原创 2018-11-01 20:25:59 · 642 阅读 · 0 评论 -
算法课5-贪心算法(贪心在图中的应用)
1. dijkstra算法总体思路是使用一个距离数组来存储到源点的最小距离,每次找到距离数组中最小的那个点对应的距离和点,遍历这个点的邻接点,如果用这个点做跳板,距离更小的话,更新邻接点对应的距离数组。int * dijkstra(int s, ALGraph & graph){ for(int i=0;i<graph.vexNum;i++){ visi...原创 2018-10-30 14:30:29 · 2110 阅读 · 0 评论 -
算法课4-图
表示方法分为邻接矩阵和邻接表 推荐邻接表BFS DFS是基础以下基于邻接表BFS 和 DFS转自https://blog.csdn.net/LaoJiu_/article/details/50389860BFS用队列 DFS用递归或栈#include <iostream>#include <iostream>#include &原创 2018-10-28 15:41:59 · 201 阅读 · 0 评论 -
算法课3-堆和优先队列
堆的性质堆是一个完全二叉树(最后一层的节点都在左边)一般都用数组来表示堆,i结点的父结点下标就为(i – 1) / 2。它的左右子结点下标分别为2 * i + 1和2 * i + 2建堆 O(N) 合并两个堆的时间复杂度和建堆相同把元素插入堆和把某元素删除,时间复杂度O(logn)每次插入都是将先将新数据放在数组最后,由于从这个新数据的父结点到根结点必然为一个有序的序列,将新数据与其...原创 2018-10-14 11:14:38 · 152 阅读 · 0 评论 -
Java使用multimap数据结构
我们希望得到键可以重复的map数据结构,这样在查询特定键时可以返回多个值,类似数据库的查询。Google Guava提供了一种优雅的数据结构Multimap可以实现一个键对应到多个值的效果。 创建:Multimap<String,Object> myMultimap = ArrayListMultimap.create();插入值: // Adding some key/value转载 2017-10-28 11:16:03 · 17437 阅读 · 1 评论 -
LeetCode 栈和队列的互换
225. Implement Stack using Queues栈是先进后出,队列是先进先出,要使用队列实现栈,应该在每次添加元素的时候,将队列整个颠倒,使得删除元素时满足栈的结构。class MyStack { private Queue<Integer>q; /** Initialize your data structure here. */ public MySta转载 2017-09-07 10:45:53 · 332 阅读 · 0 评论 -
算法课10-dynamic programming III
String similarity如何衡量两个字符串的相似度?引入edit distance的概念 δ+αp,q\delta + \alpha_{p,q}δ+αp,q gap+mismatch 即,填充一个空格或者把pq对应位置的字母换成一致,最终使得两个字符串达到一致需要最小化这个距离Hirschberg算法可将空间压缩到θ(m+n)\theta(m+n)θ(m+n)单汇最短路径...原创 2018-12-05 20:25:37 · 208 阅读 · 0 评论