![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 59
墨文昱
改变...
展开
-
动态规划的基本概念和基本方程
基本概念阶段:将所有问题的过程, 按时间或空间特征分解成若干相互联系的阶段,以便按次序去求每个阶段的解。常用字母k表示。状态:各阶段开始时的客观条件,状态用变量 SkS_kSk 表示。如 S2={A,B}S_2=\{ A,B \}S2={A,B}无后效性:当某阶段状态给定后,在这阶段以后过程的发展不受以前各段状态的影响,就是说,当前的状态是过去历史的一个完整的终结过程的过去历史只能通过当前状态去影响它未来的发展如果所选定的变量不具备无后效性,就不能作为状态变量来构造动态规划模型原创 2021-03-18 17:17:17 · 2143 阅读 · 0 评论 -
贪心算法&区间问题(无重叠区间 )
题目描述给定多个区间,计算让这些区间互不重叠所需要移除区间的最少个数。起止相连不算重叠输入输出样例输入是一个数组,数组由多个长度固定为 2 的数组组成,表示区间的开始和结尾。输出一个 整数,表示需要移除的区间数量Input: [[1,2], [2,4], [1,3]]Output: 1代码func eraseOverlapIntervals(intervals [][]int) int { if intervals == nil { return 0 } size := len(原创 2021-03-18 16:49:29 · 569 阅读 · 0 评论 -
插入排序、二分插入排序、希尔排序算法分析及Go实现
今天闲的无聊,回忆一下算法:插入排序(直接插入排序)二分插入排序算法希尔排序算法插入排序(直接插入排序)基本思想将一个记录插入到已排序好的有序表中,从而得到一个新且记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。(要点:设立哨兵,作为临时存储和判断数组边界之用)代码package mainimport ( "fmt" "math/rand")func InsertSort(st []int) .原创 2021-03-18 16:44:05 · 121 阅读 · 0 评论 -
队列原理解析及Go实现
顺序队列循环队列队列(Queue)与栈都是线性存储结构,因此以常见的线性表如数组、链表作为底层的数据结构,特点:先进先出(First In First Out)的原则,简称FIFO结构队尾添加元素,队首删除元素相关概念:队头与队尾: 允许元素插入的一端称为队尾,允许元素删除的一端称为队头入队:队列的插入操作出队:队列的删除操作顺序队列顺序存储上的不足:每次从数组头部删除元素(出队)后,需要将头部以后的所有元素往前移动一个位置,这是一个时间复杂度为O(n)的操作:可能有.原创 2021-03-18 16:28:20 · 208 阅读 · 0 评论