随笔分类 -  面试_数据结构/算法

摘要:树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌握, 阅读全文
posted @ 2016-12-04 21:31 myLittleGarden 阅读(1828) 评论(0) 推荐(0) 编辑
摘要:1. 前中后序遍历 2. 广度遍历 阅读全文
posted @ 2016-11-30 20:09 myLittleGarden 阅读(302) 评论(0) 推荐(0) 编辑
摘要:转自:http://blog.csdn.net/luckyxiaoqiang/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌握,如非递归遍历节点等等。本文努力对二叉树相关题目做一个较全的整理总结,希望对找工作的同学有所帮助。二叉树节点定义如下:struct BinaryTreeNode{ int ... 阅读全文
posted @ 2014-03-27 09:11 myLittleGarden 阅读(613) 评论(0) 推荐(0) 编辑
摘要:转自:http://blog.csdn.net/luckyxiaoqiang/article/details/7393134链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文对链表相关的面试题做了较为全面的整理,希望能对找工作的同学有所帮助。链表结点声明如下:struct ListNode{ int m_nKey; ListNode * m_pNext;};题目列表:1.求单链表中结点的个数2. 将单链表... 阅读全文
posted @ 2014-03-27 09:02 myLittleGarden 阅读(405) 评论(0) 推荐(0) 编辑
摘要:字符串移位包含的问题(编程之美 p221-223) 问题:给定两个字符串s1和s2,要求判断s2是否能够被通过s1做循环移位(rotate)得到的字符串包含。例如,S1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。 解法一:从题目中可以看出,我们可以使用最直接的方法对S1进行循环移动,再进行字符串包含的判断,从而遍历其所有的可能性。字符串循环移动,时间复杂度为O(n),字符串包含判断,采用普通的方法,时间复杂度为O(n*m),总体复杂度为O(n*n*m)。字符串包含判断,若采用KMP算法,时间复杂度为O(n),这样总体的复杂度为O(n*... 阅读全文
posted @ 2013-11-23 18:54 myLittleGarden 阅读(410) 评论(0) 推荐(0) 编辑
摘要:如图1所示,有一条单链表,其节点除了有next指针外,还有一个random指针。random指针可指向单链表中的任意节点,包括它自身。random指针一旦指定,便不再更改。请设计算法,复制此单链表,并给出时间复杂度。 图1 带有random指针的单链表 解法1. 时间复杂度为O(n*n) 先按nex 阅读全文
posted @ 2013-11-23 18:09 myLittleGarden 阅读(1360) 评论(0) 推荐(0) 编辑
摘要:1. 求两个单链表是否相交,如果相交,求出交点a: 所有结点地址比较b:对链表1使用hash算法存储,依次查找链表2结点的地址,如果找到,则相交,否则不相交,此方法虽然效率尚可,但是占用空间很大,属于使用空间换效率的方法。c:将链表2接在链表1后面,判断链表是否有环,如果有,则相交,最后,当然不要忘记恢复原来状态,去掉第一个链表到第二个链表头的指向。d:判断交点d1:分别求链表1,2的长度x,y,链表1逆序,遍历链表2记下其长度z,则可列出一个x,y,z的方程,求出链表1或者2到结点的距离。e: 判断交点d2:分别求链表1,2的长度x,y,假设x>y,则让链表1先前进x-y部,然后两个链 阅读全文
posted @ 2013-11-04 21:17 myLittleGarden 阅读(1064) 评论(0) 推荐(0) 编辑
摘要:最近学习了下java,感觉java在基本语法上与C++非常相似。作为练习,我用java实现了冒泡排序、选择排序、插入排序、基尔排序、快速排序、堆排序、计数排序、合并排序。以下为实现代码:public class Sort{ public void print_arr(int[] arr){ int len = arr.length; for (int i = 0; i dup[max]){ max = j; } } tmp = dup[i]; ... 阅读全文
posted @ 2013-09-26 16:56 myLittleGarden 阅读(480) 评论(0) 推荐(0) 编辑
摘要:树是数据结构中常用到的一种结构,其实现较栈和队稍为复杂一些。若树中的所有节点的孩子节点数量不超过2个,则该为一个二叉树。二叉树可用于查找和排序等。二叉树的主要操作有:建树,遍历等。遍历是树中的一个最为重要的操作,可分为深度优先遍历和广度优先遍历。其中,尝试优先遍历又可分为先序遍历,中序遍历和后序遍历。深度优先遍历可使用递规来实现,也可以用栈和队通过循环实现。后序的非递规遍历,比其他两种遍历稍为复杂些。下面给出一个python实现二叉树的例子:class Node(object): def __init__(self, data = -1, lchild = None, rchild = ... 阅读全文
posted @ 2013-09-17 14:19 myLittleGarden 阅读(23870) 评论(1) 推荐(1) 编辑
摘要:队也是编程开发中常见的一种数据结构。栈和队可用来模拟函数的递归过程。队的特点为先入先出,主要操作包括入队和出队。入队时需判断队是否已满,出队时需判断队是否为空。下面给出一个队的python实现的例子:class Queue(object): def __init__(self, size = 8): self.queue = [] self.size = size self.front = 0 self.rear = -1 def isFull(self): return True if self.rear =... 阅读全文
posted @ 2013-09-17 13:57 myLittleGarden 阅读(571) 评论(0) 推荐(0) 编辑
摘要:栈是编程开发中的两种较为简单的数据结构。栈和队可用于模拟函数的递归。栈的特点是后进先出。其常用操作包括:出栈,入栈等。在出栈前,需判断栈是否为空。在入栈时,需判断栈是否已满。下面给出一个用python实现的栈的实例:class Stack(object): def __init__(self, size = 8): self.stack = [] self.size = size self.top = -1 def set_size(self, size): if self.top >= size: ra... 阅读全文
posted @ 2013-09-17 13:51 myLittleGarden 阅读(2200) 评论(0) 推荐(0) 编辑
摘要:1.bloom filter算法传说中,larbin使用bloom filter算法来进行url去重。那我们就先来了解下bloom filter算法好了。【以下转自:http://hi.baidu.com/fengfengchang/item/050b11390ff61fbd633affac】先解释一下什么是哈希函数。哈希函数简单来说就是一种映射,它可取值的范围(定义域)通常很大,但值域相对较小。哈希函数所作的工作就是将一个很大定义域内的值映射到一个相对较小的值域内。传统的哈希存储假设要哈希的集合为S,它有n个元素。传统的哈希方法是,将哈希区域组织成h(h > n)个格子的列表,每一个格 阅读全文
posted @ 2013-09-09 18:06 myLittleGarden 阅读(1351) 评论(0) 推荐(0) 编辑
摘要:哈希表是种数据结构,它可以提供快速的插入操作和查找操作。hash定义了一种将字符组成的字符串转换为固定长度(一般是更短长度)的数值或索引值的方法,称为散列法,也叫哈希法。由于通过更短的哈希值比用原始值进行数据库搜索更快,这种方法一般用来在数据库中建立索引并进行搜索,同时还用在各种解密算法中。设所有可能出现的关键字集合记为u(简称全集)。实际发生(即实际存储)的关键字集合记为k(|k|比|u|小得多)。|k|是集合k中元素的个数。散列方法是使用函数hash将u映射到表t[0..m-1]的下标上(m=o(|u|))。这样以u中关键字为自变量,以h为函数的运算结果就是相应结点的存储地址。从而达到.. 阅读全文
posted @ 2013-06-27 14:36 myLittleGarden 阅读(1331) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示