出题:将一个数组最开始的k个(K小于数组大小N)元素照搬到数组末尾,我们称之为数组的旋转;现在有一个已经排序的数组的一个旋转,要求输出旋转数组中的最小元素,且时间复杂度小于O(N);分析:时间复杂度小于O(N)也就是不能用常规的遍历思路;可以将数组看成两个都是递增序列(假设为升序)的子数组,并且前半...
分类:
其他好文 时间:
2014-05-27 00:40:17
阅读次数:
283
整数分解(Integer
factorization)又叫质因数分解(质因子分解)是指把一个正整数写成几个素数的乘积。最简单的算法是,从2到N进行试除,能整除的时候就说明找到了一个新的因子,而这个过程中由于是从较小的数開始除起所以必然会先找到能整除的最小的素数。#include
void pd(in...
分类:
其他好文 时间:
2014-05-27 00:38:50
阅读次数:
310
出题:数值的整数次方(不考虑溢出),实现函数double Power(double base,
int
exponent);分析:解法1:最简单的方法是使用直接的乘法运算,但是注意处理几种特殊情况:exponent为负数,base为0;解法2:将exponent分解成2的不同次方相加的表达式,通过重...
分类:
其他好文 时间:
2014-05-27 00:36:27
阅读次数:
291
出题:要求用递归将一个栈结构的元素内外颠倒;分析:本题再次说明系统栈是程序员最好的帮手,但递归度较高所以时间复杂度较大,可以使用空间换时间的方法(额外数组保存栈元素,然后逆向压入);第一层递归(清空栈元素,并使用系统栈保存):[1,2,3,4,5],栈顶元素为1,将1弹出之后,递归处理[2,3,4,...
分类:
其他好文 时间:
2014-05-27 00:33:08
阅读次数:
445
1、最近编写了几个工厂需要的test
pattern,用于UHD120和UHD60的pannel上,其中UHD120需要做半分屏处理,存储一行。2、最近写了UHD120/60/30缩放到FHD120/60/30的算法,采用的算法是双线性算法,相邻4点取平均得到的。需要进行行的存储。注意DPRAM的使...
分类:
其他好文 时间:
2014-05-27 00:17:14
阅读次数:
256
这是什么?是一个图?不对,确切的说这是一棵树。这哪里像树呢?不要着急我们来变换一下。
是不是很像一棵倒挂的树,也就是说它是根朝上,而叶子朝下的。不像?哈哈,看完下面这幅图你就会觉得像啦。
你可能会问:树和图有什么区别?这个称之为树的东西貌似和无向图差不多嘛。不要着急,继续往下看。树其实就是不包含回路的连通无向图。你可能还是无法...
分类:
其他好文 时间:
2014-05-23 01:37:38
阅读次数:
360
二叉树是一种特殊的树。二叉树的特点是每个结点最多有两个儿子,左边的叫做左儿子,右边的叫做右儿子,或者说每个结点最多有两棵子树。更加严格的递归定义是:二叉树要么为空,要么由根结点、左子树和右子树组成,而左子树和右子树分别是一棵二叉树。
下面这棵树就是一棵二叉树。
二叉树的使用范围最广,一棵多叉树也可以转化为二叉树,因此我们将着重讲解二叉树。
二叉树中还有连两...
分类:
其他好文 时间:
2014-05-23 00:11:28
阅读次数:
301
注意:1、仅根据前序和后序无法构建唯一的二叉树;2、二叉树前序遍历,第一个数字总是树的根节点的值;3、中序遍历中,根节点的值在序列的中间,左子树的值子在根节点的值得左边,右字树的值在根节点的值得右边;4、思路:递归...
分类:
其他好文 时间:
2014-05-22 23:56:14
阅读次数:
408
在DAG中DFS中顶点的出栈顺序即逆拓扑序。
def topological_sort( graph ):
is_visit = dict( ( node, False ) for node in graph )
li = []
def dfs( graph, start_node ):
for end_node in...
分类:
编程语言 时间:
2014-05-22 23:12:10
阅读次数:
487
快速排序是一个经常使用的算法,由于每次用的时候,都感觉没有理解清楚,特写一篇文章记录一下。
算法介绍
快速排序有点类似有冒泡排序,冒泡排序从相邻的两个元素比较,小的在左边,大的在右边,这个算法很容易理解。而快速排序它相当于是在一头一尾两边分别排序比较,比较的对象是当前元素值,和一个选定的key值,主题的思想就是通过跟key值比较,把大于key的值放在右边,小于的放在左边这样就完成了...
分类:
其他好文 时间:
2014-05-22 17:06:52
阅读次数:
255