对树形结构数据的整理算法。每次做到类似的问题的时候,都很后悔上大学的时候对acm嗤之以鼻。其实现在还是有点嗤之以鼻。。。。我觉得这根本不叫算法啊,数学模型才叫算法啊。。。。求醍醐灌顶!
另外本文求更优的解法,尤其是学过acm的童鞋的批评。...
分类:
其他好文 时间:
2014-06-10 15:09:23
阅读次数:
198
问题:
给定的二叉查找树中,有两个节点不小心被调换了位置,现在需要将其修正,不改变树的结构。
分析:
二叉排序树的中序遍历是有序的,所以这个问题又是建立在中序遍历模板上的问题,所以我们可以对其进行中序遍历,并用一个pre指针指向当前遍历结果中的最后一个结点,即下次遍历前的前一个结点。然后就可以通过将当前结点与pre结点进行比较,来判断是否有序了。若乱序,就将这两个结点都放入到预先定义的容器中...
分类:
其他好文 时间:
2014-06-10 10:54:41
阅读次数:
153
既然介绍了冒泡排序,就不得不说一下冒泡排序最为重要的一个变种——鸡尾酒排序(也称为定向冒泡排序)。此算法与冒泡排序的不同之处在于鸡尾酒排序是双向进行的,而冒泡排序则是单向进行的。
关于两种排序的效率方面,鸡尾酒排序在某些情况下比冒泡排序稍微好那么一点点。不过,在大部分乱序的情况下,鸡尾酒排序与冒泡排序的效率都很差劲。...
分类:
其他好文 时间:
2014-05-31 18:00:18
阅读次数:
301
出题:给定一个乱序链表,节点值为ASCII字符,但是其中有重复项,要求去除重复项并保证不改变剩余项的原有顺序;分析:创建一个256(2^8)大小的bool数组,初始化为false,顺序读取链表,将字母对应位置为false的重新标记为true并保留节点,将字母对
应位置为true的保持并删除节点;时间...
分类:
其他好文 时间:
2014-05-26 10:19:49
阅读次数:
209
内存屏障是指“由于编译器的优化和缓存的使用,导致对内存的写入操作不能及时的反应出来,也就是说当完成对内存的写入操作之后,读取出来的可能是旧的内容”(摘自《独辟蹊径品内核》)。内存屏障的分类:编译器引起的内存屏障缓存引起的内存屏障乱序执行引起的内存屏障1、编译器引起的内存屏障:我们都知道,从寄存器里面...
分类:
其他好文 时间:
2014-05-12 06:00:23
阅读次数:
283
1/**2*数组乱序类3*@authornoam4*/5publicclassNRandom{67/**8*对给定数目的自0开始步长为1的数字序列进行乱序9*@paramno给定数目10*@return乱序后的数组11*/12publicstaticint[]getSequence(intno){1...
分类:
其他好文 时间:
2014-05-10 05:24:18
阅读次数:
243
这是一道好题,思路虽然有,但是提交之后总是有数据过不了,又按照数据改改改,最后代码都没法看了。收到的教训是如果必须为自己的代码加上很多很多特殊的限定,来过一些特殊的数据的话,说明代码本身有很大的漏洞。
这道题,我想到了要用两个指针保存乱序的节点,甚至想到了用一个pre指针来保存前面一个节点,但是问题出在哪里呢?我觉得应该是自己对树的遍历理解的不够深刻。既然知道了二叉搜索树一定是用中序遍历的,那么...
分类:
其他好文 时间:
2014-05-09 01:54:42
阅读次数:
250
题目:http://poj.org/problem?id=2182
http://acm.hdu.edu.cn/showproblem.php?pid=2711 题意:有N头牛,编号为1--N。
乱序排成一列,已知每头牛前面有多少头牛比它的编号小(从第二头牛开始)。 现在需要求这个序列中从前到后,每...
分类:
其他好文 时间:
2014-05-03 22:30:06
阅读次数:
504