Fork me on GitHub

随笔分类 -  算法

用熟悉编程语言实现
摘要:前言单向链表查找下一个元素很方便,要查找上一个元素时,需要从头开始向下遍历,很是麻烦。如何解决这个问题呢?使用双向链表结构可以解决这个问题。双向链表在单向链表的基础上,增加一个指向上一个节点的指针,这就形成了双向链表结构。因增加了一个指针域,故需要占用更多的内存空间,换就话说,用空间换时间。现在硬件... 阅读全文
posted @ 2015-10-25 14:45 huan&ping 阅读(208) 评论(0) 推荐(0)
摘要:前言使用没有指针的语言模拟实现数据结构,会碰到一些莫名奇妙的问题单向循环链表之前学习的链表都是单向且最后一个节点指向空节点,如果最后一个节点指向头节点,这样就形成了一个环,名字叫单向循环列表,简称循环列表源码(JS模拟实现)包含了头指针以及尾指针的实现/** * @desc 循环链表 * * @au... 阅读全文
posted @ 2015-08-16 20:14 huan&ping 阅读(211) 评论(0) 推荐(0)
摘要:前言数据结构学习,发现坚持下来比较难,本次学习与上次学习间隔了几个月,不管怎样还是要强迫自己坚持下来。静态链表用数组模拟链式结构的线性表,对于没有指针的编程语言,只能使用这种方式来模拟。这是大师们想出来的实现方法,体会大师们的编程思路,站在大师们的肩膀上解决一个又一个的难题。每个节点包含一个游标(数... 阅读全文
posted @ 2015-07-12 19:30 huan&ping 阅读(303) 评论(0) 推荐(0)
摘要:前言线性表链式存储结构的实现,通过这种方式实现的线性表,简称为链表,这是这篇文章的主题。与顺序存储相对应的是链式存储。链式存储逻辑结构相邻,物理结构可能相邻也有可能不相邻。链式结构的优点有:1.存储空间不限制(操作系统可支持的存储空间范围内);2.插入删除操作不需要移动元素等等。当然链式结构也有缺点... 阅读全文
posted @ 2015-01-25 09:33 huan&ping 阅读(346) 评论(0) 推荐(0)
摘要:前言我非CS科班出身,大学时有CS相关课程,慢慢对它产生了兴趣。毕业之后,想找一份WEB编程方面的工作,不过未找到,为了生存选择了一家工厂做普工。也许是我的运气好吧,第一次找编程的工作面试官是自己的校友,然后给了我实习的机会,让我踏上了编程之路,现在想来非常的感激!入行也有几年了,发现IT行业技术日... 阅读全文
posted @ 2015-01-01 11:17 huan&ping 阅读(378) 评论(0) 推荐(0)
摘要:前言这道面试题是我在博客园首页的一篇文章中看到的,面试题我简单的提取出来了,文章链接:http://news.cnblogs.com/n/192014/。在我用JS实现了我自己的想法之后,我再一次看了这篇文章。在这篇文章的评论里,我惊喜的发现,有些大牛给出了更好的思路,我会备注在这篇文章的后面,也可以直接去看原文的评论。博客园大牛还是很多的,程序猿是很聪明的群体。:):)面试题 一个平面上有很多墙,高度参差不齐,每堵墙平行挨着,如下图所示,计算如下所示的图墙可装水量,框里面的数字代表墙的高度具体实现1.可以先试着思考下怎么做:) 2.用JS实现的 1 /** 2 * 思路: 3 * 1.确.. 阅读全文
posted @ 2013-11-04 00:57 huan&ping 阅读(407) 评论(2) 推荐(0)
摘要:= $right){ return ; } $pivot = $array[$left]; //选择比较元素 $array[$left] = $array[$right]; $array[$right] = $pivot; //比较元素移至数组末尾 $storeIdx = $left; for ($i = $left; $i Wiki:http://en.wikipedia.org/wiki/Quicksort 阅读全文
posted @ 2012-11-26 20:36 huan&ping 阅读(271) 评论(0) 推荐(0)
摘要:花了几天时间看源码才弄清楚状态之间的转换关系,画了如下状态关系转换图:牛人源代码如下: 1 function on_format(id) { 2 var textarea = document.getElementById(id); 3 var text = textarea.value; 4 var obj = format_obj(); 5 obj.init(); 6 obj.g_trigraph_on = document.getElementById('format_trigraph').checked; 7 len = t... 阅读全文
posted @ 2012-11-23 18:34 huan&ping 阅读(2302) 评论(0) 推荐(0)
摘要:备注:几天之前凌晨6点醒了,也许是心血来潮,突然想用手机记下自己当时思考的几道百度算法面试题,题目是在园子里看到的。草稿记在QQ日志草稿箱里。已下为正文:1.大整数相乘。计算机表示整数的范围有限,那怎么实现两大整数相乘呢?想了下没有思路,咨询了google大牛,看到有人是这样实现的:大整数用字符串表示,每个大整数每一个数字字符转换为对应的整数,存入一维数组中,然后被乘数的每一位数字分别与乘数的每一位数字相乘,结果保存在另一一维数组中,此一维数组的大小为:被乘数的个数*乘数的个数,最后处理进位。此方法用计算机模拟了两数相乘的过程。还有没有更好的方法?我暂时没查到也没想到。既然大整数相乘计算机不能 阅读全文
posted @ 2012-11-15 20:41 huan&ping 阅读(8581) 评论(2) 推荐(0)
摘要:这道题是在博客园看到的。问题:比如给定一个字符串,返回字符串中相邻的字符个数大于等于2的记录数,比如aaa,算1个记录,aaabb,算2个记录,abbccaaa,算3个记录, aaabbbcccefffghhh,算5个记录.思路:循环遍历字符串,当前字符跟上一个字符比较;如果相同字符数加一;如果不相同,判断当前字符相同数是否大于1,大于1记录数加1,重置相同字符数累加器为1;代码(PHP实现):= 0; $i--){ $currentChar = $str{$i}; if ($currentChar === $prevChar){ $currentCharCnt++;... 阅读全文
posted @ 2012-08-29 18:47 huan&ping 阅读(558) 评论(0) 推荐(0)
摘要:声明:算法由PHP大牛鸟哥所写(http://www.laruence.com).游戏规则: 输入任意4个数字,然后对其进行+-*/组合,所得数学表达式值等于24.算法思路:把每一个数字看做一个独立的数学表达式,表达式之间加上标点符号组合成新表达式,一共组合4次,表达式之间的所有组合可以通过递归来实现.代码如下: * @copyright (c) 2009 http://www.laruence.com */class TwentyFourCal { public $needle = 24; public $precision = '1e-6'; function Tw... 阅读全文
posted @ 2012-06-07 13:35 huan&ping 阅读(874) 评论(0) 推荐(0)
摘要:PHP代码如下: 1 $arr){25 if ($arr[0] == $aInsert[0]){26 $maxCmpIdx = $idx;27 }28 $cnt++;29 }30 if ( !$maxCmpIdx){31 $maxCmpIdx = $cnt++;32 }33 $aSorted[$maxCmpIdx] = $aInsert;34 for ($i = $maxCmpIdx; $i > 0; $i--){35 if ($aSorted[$i][1] > $aSorted[$i-1][1]){36 $aTmp =... 阅读全文
posted @ 2012-06-06 13:28 huan&ping 阅读(726) 评论(0) 推荐(0)