- 博客(18)
- 资源 (1)
- 收藏
- 关注
原创 《算法(第四版)》部分练习题索引
《算法(第四版)》部分练习题索引均为学习小结,不定时更新,欢迎讨论指正,谢谢!1.3.45 栈的可生成性1.3.49 栈与队列1.4.2 修改ThreeSum
2019-01-15 11:22:57 612
原创 ThreadLocal及其应用浅析
ThreadLocal及其应用浅析参考视频:https://www.bilibili.com/video/BV1fA411b7SX?from=search&seid=4082488691777652024参考博客:https://www.cnblogs.com/micrari/p/6790229.html#3835852TheadLocal<T> tl = new ThreadLocal<>();dosomething();tl.set(x);ThreadLoc
2021-07-31 11:28:08 208
原创 《算法(第四版)》2.3.22:快速三向切分,练习题学习小结
快速三向切分。按照书中所述,将重复的元素v放置于子数组两端,中间元素分为两个部分,左半部分小于v,右半部分大于v。才排序前需要遍历数组知道找到一个与首元素相等的元素,并将其放置到末尾。如上图,当i与j相遇(i = j)时,过程“排序中”结束。置换元素时,采用“头尾相遇”的方式,例如从lo和i开始相向置换元素直到一方到达边界p。关键代码如下public void sort (Compar...
2019-10-19 21:50:51 378
原创 《算法(第四版)》2.3.17和2.3.18快速排序改进,练习题学习小结
《算法(第四版)》2.3.17:哨兵,2.3.18:三取样切分哨兵。正如书中所说,while循环中的边界检查是多余的,对于左侧边界,v不可能小于a[lo],故左侧边界的检查是多余的;对于右侧边界,只要将数组最大元素放置到末尾该元素就永远不会移动,v不可能大于a[hi]。标准快排和哨兵快排关键代码对比:标准快排public void sort (Comparable[] a) { StdR...
2019-10-11 11:55:42 449 2
原创 《算法(第四版)》1.3.49:有限个栈实现队列,练习题学习小结
用有限个栈实现一个队列,保证每次出队和入队(在最坏的情况下)都只需要常数次的栈操作。本文参考了下面两篇博客,解决这个问题的思路可以阅读这两篇博客,本文不在赘述。在核心思路不变的情况下,本文用Java进行了实现。这篇思路更清晰 https://www.cnblogs.com/dacc123/p/10574939.html特别感谢沈星繁的帮助 https://www.cnblogs.com/ik...
2019-06-29 20:58:11 1206
原创 《算法(第四版)》1.4.27用栈表示队列,练习题学习小结
《算法》1.3.49用栈表示队列,练习题学习小结《算法(第四版)》1.3.49:栈与队列。用有限个栈实现一个队列,保证每个队列(在最坏的情况下)都只需要常数次的栈操作。换言之,用若干个后进先出的栈表示一个先进先出的队列。思路a:有两个栈s和st,s视为栈,st视为队列,st.push(s.pop())实现item排列顺序的变换。添加item时,item先进入栈s,再通过对应关系重置“队列”st...
2019-06-25 17:10:09 478
原创 隐马尔可夫模型(HHM)学习笔记1.1
概率计算算法Java实现依据我的笔记整理前向算法import java.util.ArrayList;public class forwardProbabilityCalculate { double A[][]; //状态变量转换的概率 double B[][]; //获取各种观测变量的概率 double Pi[]; //初始状态概率 int T; //观测时序...
2019-05-30 20:07:39 817
原创 隐马尔可夫模型(HHM)学习笔记3
隐马尔可夫模型的学习Baum-Welch算法整理了李航书上的内容。马尔科夫模型是一个含有隐变量的概率模型P(x∣λ)=∑yP(x∣y,λ)P(y∣λ)P\left( {{\bf{x}}|{\bf{\lambda }}} \right) = \sum\limits_{\bf{y}} {P\left( {{\bf{x}}|{\bf{y}},{\bf{\lambda }}} \right)P\le...
2019-05-21 18:31:22 471
原创 隐马尔可夫模型(HHM)学习笔记1
隐马尔可夫模型将隐马尔可夫模型中的变量分为两组:一组为状态变量[\left{ {{y_1},{y_2}, \cdots ,{y_n}} \right}]
2019-05-18 20:12:50 1069
原创 《算法(第四版)》2.2.11改进归并排序,练习题学习小结
《算法(第四版)》2.2.11改进归并排序:加快小数组的排列速度,检测数组是否已经有序以及通过在递归中交换参数来避免数组复制(请参照书中内容阅读以下内容)。一、加快小数组的排列速度对应书中“对小规模数组使用插入排序”,实现方法较为简单,将Merge算法中的if(hi &amp;amp;amp;amp;amp;amp;amp;amp;amp;lt; = lo) return; 改为if(hi - lo &amp;amp;amp;amp;amp;amp;amp;amp;amp
2019-03-06 19:51:16 804 1
原创 《算法(第四版)》2.1.13纸牌排序,练习题学习小结
将一副扑克牌按花色排序(花色顺序是黑桃、红桃、梅花和方片),限制条件是所有牌都是背面朝上排成一列,而你一次只能翻看两张牌或者交换两张牌(保持背面朝上)。不妨设黑桃=1,红桃=2,梅花=3,方片=4。初始一个原始数组for(int i = 0; i < 52; i ++) { a[i] = i / 13 + 1; System.out.print(a[i] + " "); ...
2019-02-16 20:00:31 1505
原创 《算法(第四版)》1.4.22仅用加减实现的二分法查找,练习题学习小结
判断给定的整数是否存在。只能用加法和减法以及常数的额外内存空间。程序的运行时间在最坏情况下应该和logN成正比。书中给予的提示:用斐波那契数代替2的幂(二分法)进行查找。用两个变量保存Fk和Fk-1并在[i, i+Fk]之间查找。在每一步中,使用减法计算Fk-2,检查i+Fk-2处的元素,并根据结果将搜索范围变为[i, i+Fk-2]或是[i+Fk-2, i+Fk-2+Fk-1]。设给定数组a...
2019-01-20 16:30:45 364
原创 《算法(第四版)》1.4.15快速3-sum,练习题学习小结
使用一个线性级别的算法(而非基于二分查找的线性对数级别的算法)实现TwoSumFaster来计算一排序的数组中和为0的整数对的数量。用相同的思想为3-sum问题给出一个平方级别的算法。线性级别的算法增长的数量级为N,常见的是使用一层for循环。对于顺序排列的数组,只要从数组两端向中间逼近匹配即可。若a[head] + a[tail] &gt; 0,则tail – ;若a[head] + a[ta...
2019-01-17 15:10:57 1002 6
原创 《算法(第四版)》1.4.2修改ThreeSum,练习题学习小结
处理两个较大的int值相加可能溢出的情况public class jarTest { public static void main(String[] args) { // TODO Auto-generated method stub int a = 2147483647; int b = 2147483647; int c = a + b; System.ou...
2019-01-15 16:37:27 863
原创 《算法(第四版)》1.3.45栈生成的可能性,练习题学习小结
栈的可能行。用例程序会进行一系列混合的入栈出栈操作,入栈操作按0,1,…,N-1的顺序进行,判断给定的排列是否是某系列混合出入栈操作的结果(你使用的空间量与N无关,即不能用某种数据结构存储所有整数)。根据书中的提示:除非对于某个整数k,前k次出栈操作会在前k次入栈操作前完成,否则栈不会向下溢出。如果某个排列可以产生,那么它产生的方式一定是唯一的:如果输出排列中的下一个整数在栈顶,则将它弹出,否则...
2019-01-15 15:23:01 585
原创 疯狂Java讲义第六章下“梭哈游戏练习”
定义一个类,该类用于封装一桌梭哈游戏,这个类应该包含桌上剩下的牌的信息,并包含5个玩家的状态信息:他们各自的位置,游戏状态(正在游戏或已放弃)、手上已有的牌等信息。如果有可能,这个类还应该实现发牌方法,这个方法需要控制从谁开始发牌,不要发牌给放弃的人,并修改桌上剩下的牌。一些思路:1.发牌前先洗牌,可以调用Collections.shuffle(List)。默认扑克的一种有序的排列,然后进行编...
2018-10-08 10:12:33 1348
SenseAir S8 Technical Description
2019-05-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人