algorithm
文章平均质量分 77
陳小貳
他有着过人的笨拙。
展开
-
单链表逆序
很经典的“单链表逆序”问题。很多公司的面试题库中都有这道题,有的公司明确题目要求不能使用额外的节点存储空间,有的没有明确说明,但是如果面试者使用了额外的节点存储空间做中转,会得到一个比较低的分数。如何在不使用额外存储节点的情况下使一个单链表的所有节点逆序?我们先用迭代循环的思想来分析这个问题,链表的初始状态如图(1)所示:图(1)初始状态 初始状态,prev是NULL,he转载 2015-08-29 10:10:14 · 387 阅读 · 0 评论 -
二叉树遍历
//输出void Visit(BiTree T){ if(T->data != '#'){ printf("%c ",T->data); }}//先序遍历void PreOrder(BiTree T){ if(T != NULL){ //访问根节点 Visit(T); //访问左子转载 2015-11-13 15:13:33 · 263 阅读 · 0 评论 -
字符串匹配的KMP算法
转载”阮一峰的网络日志“字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。这种算法不太容转载 2015-11-13 16:24:33 · 246 阅读 · 0 评论 -
二叉树遍历的前驱和后继
下面关于二叉树三种遍历方法的前驱和后继作讨论和总结。一、前序遍历1.1 找后继: (1)若有左子女,则后继是左子女; (2)若无左子女,有右子女,则后继是右子女; (3)若既无左子女,又无右子女,则是一片叶子: a.若是其父母的左子女,且父母有右子女,则后继是父母的右子女。 b.若是其父母的左子女,且父母无右子女; c.若是其父母的右子女。 b、转载 2015-11-13 15:11:44 · 1513 阅读 · 0 评论 -
一致性哈希算法
一致性哈希转载 2015-11-13 17:53:37 · 515 阅读 · 0 评论 -
递归算法实例讲解
在数学与计算机科学中,递归是指在函数的定义中使用函数自身的方法。递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。递归算法解决问题的特点:(1) 递归就是在过程或函数里调用自身。(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。(3) 递归算法解题通常显得很简洁,但递转载 2015-09-04 11:53:04 · 508 阅读 · 0 评论 -
旋转数组
问题定义: 给定一个数组data[]和一个数M,向右旋转M位,要求时间复杂度为O(n),空间复杂度为O(1),如,char data[]="abcde", M = 2,旋转以后data 应该为cdeab,如何高效的实现该功能?这是一个非常经典的题目,第一次自己看到可能根本想不出来,也是09年计算机研究生入学考试的算法题,该题在《编程珠玑》和《编程之美》里都有讨论,写这篇文转载 2015-09-04 12:18:18 · 460 阅读 · 0 评论 -
插入排序
一、基本思想通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入。插入排序非常类似于整扑克牌。在开始摸牌时,左手是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左地进行比较。无论什么时候,左手中的牌都是排好序的。如果输入数组已经是排好转载 2015-08-30 10:42:29 · 480 阅读 · 0 评论 -
一个十分有趣的字符串算法题目
在blogspot上看到一个十分有趣的字符串算法题目,作者讲述了自己面试google的一次经历。本文不理会这个故事,只来讨论一下里面着个有趣的算法。 算法题目:有两个字符串由不同的字母组成,一长一短,长的为A短的为B。设计一个算法,如果所有在B中出现的字符都在A中出现,则返回true,否则返回false。 例子: 如下字符串: 字符串A:转载 2015-08-30 10:44:05 · 1134 阅读 · 0 评论 -
快速排序
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速转载 2015-08-30 10:28:59 · 368 阅读 · 0 评论 -
一个经典编程面试题的“隐退”
面试程序员很困难。Jeff Atwood 抱怨找一个会写代码的候选人是如此艰难。在技术媒体发布的那些“最佳”面试题中,很少有能让我提起兴趣的——尽管我很喜欢IKEA的这个面试题。Codility和 Interview Street这样的创业公司从这个具有挑战性的课题中看到了机会。与此同时,Diego Basch 呼吁我们停止逼迫求职者进行白板编程。对此我没有什么更好的建议。我同意IQ测转载 2015-08-30 10:49:26 · 423 阅读 · 0 评论 -
堆排序的实现
自己写的,有问题请指出。/*** @file BinaryHeap.hpp* @brief 二叉堆* * @author xiao2 joyjj0218@qq.com * @version 1.0 * @date 2015.11.17 */#ifndef BINARYHEAP_HPP_#define BINARYHEAP_HPP_原创 2015-11-17 16:40:50 · 299 阅读 · 0 评论