上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 34 下一页
  2012年9月27日
摘要: 1 <?php 2 #设计一个栈的数据结构,要求增加一个min函数,可以取出栈的最小元素 3 #要求push,pop,min的时间复杂度都是O(1) 4 #解题思路:在每个栈元素增加一个min变量,这个变量存储次元素及其之前所有元素的最小值 5 6 #栈节点 7 class Node { 8 public $data = null; 9 public $min = null;10 }11 12 class Min_Stack {13 private $data = array();14 ... 阅读全文
posted @ 2012-09-27 11:24 ZimZz 阅读(784) 评论(0) 推荐(0) 编辑
  2012年9月26日
摘要: <?php #将二叉查找树转换为双向链表,要求不能创建新节点,只能调节节点指针 #解题思路是从树的底层开始,调整每个节点的左右子树,将左子树的最大节点与根节点相连,将又子树的最小节点与根节点相连 #我们把节点的left当做链表的pre指针,right当做链表的next指针 #直到所有子树以及根节点转换完成 #树节点 class Node { public $data = null; public $parent = null; public $left = null; public $right... 阅读全文
posted @ 2012-09-26 23:19 ZimZz 阅读(564) 评论(0) 推荐(0) 编辑
摘要: 原来看过一篇文章,如下----------------------------------------------------------------------------------------------------------------sql server查询每门课程的前两名的学生编号,课程编号,成绩并排序数据结构介绍:成绩表(编号,学号,科目编号,成绩)SQL基础了解:select * from 成绩表对于Sql Server它查询的过程是逐条查询的,也就是一条一条记录进行查询的;那么我们可以先思考下,当它查“成绩表”时,第一条成功后才查询第二条的;假设查特定的一门科目的最高分值前 阅读全文
posted @ 2012-09-26 01:26 ZimZz 阅读(1817) 评论(0) 推荐(0) 编辑
摘要: 算法思路:每次取两个数组的中位数进行比较,如图我们假定取的中位数是下中位数,即每次取中位数坐标时使用floor取出,当数组长度是奇数时,取得是正中间的元素,是偶数时取得就是下中位数1. a[n/2] == b[n/2],可知中位数即为a[n/2],返回即可2. a[n/2] < b[n/2],设a,b数组蓝色红色部分元素分别为a[b],a[r],b[b],b[r],可知 a[b] <= a[n/2] < b[n/2] <= b[b]于是有 a[b] <= a[r], a[b] < b[b] (数组元素可能存在重复)b[b] >= b[r] , b[b] 阅读全文
posted @ 2012-09-26 01:22 ZimZz 阅读(1960) 评论(0) 推荐(0) 编辑
  2012年9月25日
摘要: 已有一个随机数发生器,生成0的概率为p,生成1的概率为1-p,求如何利用这个随机数发生器制作一个生成1~n的概率都是 1/n 的发生器制作 1 2 发生概率都是 1 / 2 的发生器,连续发生2次,则发生00,11的概率为p*p,(1-p)(1-p),发生10,01的概率都为p(1-p),在发生10时返回1,发生01时返回2,则发生1,2的概率相等制作 1 2 3 发生概率都是 1 / 3的发生器,连续发生3次,则发生001,010,100的概率都为p*p*(1-P),或者是110,101,011概率都为p*(1-p)*(1-p),则用001,010,100分别对应1,2,3返回,即可使得发生 阅读全文
posted @ 2012-09-25 01:03 ZimZz 阅读(3111) 评论(0) 推荐(2) 编辑
  2012年9月24日
摘要: 1 <?php 2 #二叉树的广度优先遍历 3 #使用一个队列实现 4 5 class Node { 6 public $data = null; 7 public $left = null; 8 public $right = null; 9 }10 11 #@param $btree 二叉树根节点12 function breadth_first_traverse($btree) {13 $traverse_data = array();14 ... 阅读全文
posted @ 2012-09-24 23:41 ZimZz 阅读(4359) 评论(0) 推荐(0) 编辑
摘要: 1 <?php 2 #查找有序数组中和为n的数对 3 #思路是从数组两边开始找,当a[h] + a[t] == n,返回数对 4 #当a[h] + a[t] < n, h++ 5 #当a[h] + a[t] > n, t-- 6 7 function search_n($a, $n) { 8 $h = 0; 9 $t = count($a) - 1;10 $pairs = array();11 12 while ($h < $t) {13 $sum = $a[$h... 阅读全文
posted @ 2012-09-24 23:12 ZimZz 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 1 <?php 2 #查找一个在数组中出现次数超过一半的数,时间复杂度O(n),空间复杂度O(1) 3 4 #使用b存储数组中某个数,c存储其出现次数 5 #遍历数组,如果b == a[i],则 c++; 6 #如果b != a[i], c == 0, 则 b = a[i], c = 1; 7 #如果b != a[i], c != 0, 则 c--; 8 #易知,如果一个数出现次数超过了一半,则无论其c怎么减,也不可能减到0,并被替换掉 9 #所以数组遍历完以后,b就是出现超过一半的数 10 function searc... 阅读全文
posted @ 2012-09-24 22:11 ZimZz 阅读(646) 评论(0) 推荐(0) 编辑
摘要: 1 <?php 2 #短连接生成算法 3 4 class Short_Url { 5 #字符表 6 public static $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 7 8 public static function short($url) { 9 $key = "alexis";10 $urlhash = md5($key . $url);11 ... 阅读全文
posted @ 2012-09-24 21:23 ZimZz 阅读(11847) 评论(0) 推荐(1) 编辑
摘要: 1 <?php 2 #最大递增子序列的查找 3 function max_subincseq($a) { 4 $len = count($a); 5 $lis = array(); #lis数组用于存储当前最长子序列长度,lis[i]表示以a[i]结尾的最长递增子序列长度 6 $lis[0] = 1; 7 $max_seqlen = 1; 8 9 for ($i = 1; $i < $len; $i++) {10 $lis[$i] = 1;11 f... 阅读全文
posted @ 2012-09-24 00:41 ZimZz 阅读(476) 评论(0) 推荐(0) 编辑
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 34 下一页