数据结构与算法(Java)
小菜鸟入门
这个作者很懒,什么都没留下…
展开
-
数据结构与算法(1)——递归和回溯
本人最近开始复习数据结构与算法,在此记录学习内容,希望自己能有进步。。原创 2017-03-19 14:37:40 · 513 阅读 · 0 评论 -
数据结构与算法(30)——查找习题(二)
题目:给定一个含n个元素的数组,在数组中查找两个元素,这两个元素的和等于给定的元素K 题目:查找和最接近0的两个元素:给定一个包含正数和负数的数组,查找两个元素,使得它们的和最接近0.原创 2017-05-24 22:30:44 · 1719 阅读 · 0 评论 -
数据结构与算法(31)——查找习题(三)
题目:将偶数与奇数分开给定一个数组A[],写出一个函数,使其能够将偶数与奇数分开。该函数把所有偶数放在前面,奇数放在后面。例如,输入 = {12, 34, 45, 9, 8, 90, 3} 输出 = {12, 34, 90, 8, 9, 45, 3}在输出时,数字顺序可以改变,也就是34可以出现在12之前思路:这是荷兰国旗问题的变体1.初始化两个索引left和right:left=0,rig原创 2017-05-25 09:55:12 · 444 阅读 · 0 评论 -
数据结构与算法(21)——二叉树习题四
题目:将一棵树转换成其镜像树。题目:判断两棵树是否互为镜像题目:根据中序遍历序列和前序遍历序列构建二叉树题目:打印二叉树中某节点的所有祖先节点题目:查找二叉树中两个节点的最近公共祖先(LCA,Lowest Common Ancestor)题目:Zigzag树遍历题目:n个节点可以组合成多少棵不同的二叉树?原创 2017-05-15 14:41:41 · 463 阅读 · 0 评论 -
数据结构与算法(22)——二叉搜索树
二叉搜索树(BinarySearchTree)在二叉搜索树中,所有的左子树节点的元素小于根节点的元素数据,所有的右子树节点的元素大于根节点的元素数据。1.一个节点的左子树只能包含值小于该节点数据的节点2.一个节点的右子树只能包含值大于该节点数据的节点3.左右子树必须也为二叉搜索树原创 2017-05-15 19:26:53 · 660 阅读 · 0 评论 -
数据结构与算法(9)——栈
栈(stack)是一个有序线性表,只能在表的一端(成为栈顶,top)执行插入和删除操作。最后插入的元素是第一个被删除的。所以栈也称为后进先出(Last In First Out,LIFO)或先进后出(First In Last Out,FILO)线性表。两个栈操作都有专用名称,一个称为入栈(push),表示在栈中插入一个元素;另一个称为出栈(pop),表示从栈中删除一个元素。原创 2017-03-29 21:17:09 · 346 阅读 · 0 评论 -
数据结构与算法(32)——字符串算法
检查字符串P是否是字符串T的子串。因为要检查整个定长的字符串P,所以有时候这些算法称为精确字符串匹配算法。Robin-Karp算法KMP(Knuth Morris Pratt)字符串匹配算法原创 2017-05-26 22:26:40 · 557 阅读 · 0 评论 -
数据结构与算法(33)——字符串习题
题目:反转字符串题目:反转给定句子中单词题目:删除给定字符串中相同的相邻字符原创 2017-05-26 22:31:59 · 687 阅读 · 0 评论 -
数据结构与算法----个人小结
对数据结构的学习断断续续持续了有三个月之久,随着《数据结构与算法经典问题分析》Java语言描述 一书的结束,数据结构的学习也暂告一段落。这并不意味着停止学习算法,后面我将会继续学习并不断提高自己表述能力。 数据结构学习绝非一蹴而就,就拿我这本书来说,其中有太多的知识我被我忽略,大有捡了籽麻丢西瓜的感觉。后期我会不断充电学习,把自己的内功修炼到家,不然到了社会上会被批死。原创 2017-05-27 10:57:13 · 5747 阅读 · 0 评论 -
数据结构与算法(16)——树基本概念
树是一种典型的非线性结构;一棵树是N个节点和N-1条边的集合。这个集合可以是空集;若不是空集,则树由根节点(root)以及0个或多个非空的子树T1、T2、T3、...、Tn组成。原创 2017-05-08 22:37:57 · 530 阅读 · 0 评论 -
数据结构与算法(17)——二叉树遍历
遍历概念访问树中所有节点的过程叫作树遍历。遍历分类遍历分类可以根据当前节点被访问的顺序来划分;假设,当前节点用D表示;该节点的左子树用L表示;该节点的右子树用R表示DLR:前序遍历(preOrder traversal)LDR:中序遍历(inOrder traversal)LRD:后序遍历(postOrder traversal)原创 2017-05-09 11:18:40 · 326 阅读 · 0 评论 -
数据结构与算法(23)——优先队列和堆
优先队列(Priority Queue)是一种数据结构,它支持插入(Insert)操作和删除最小值(DeleteMin)或删除最大值(DeleteMax)并返回删除元素操作。优先队列的这些操作等价于队列的EnQueue和DeQueue操作。区别在于,对于优先队列,元素进入队列的顺序可能与其被操作的顺序不同。简单来说就是优先队列不一定满足先入先出的原则,而是根据元素的优先级来进行操作。原创 2017-05-17 21:27:52 · 532 阅读 · 0 评论 -
数据结构与算法(18)——二叉树习题一
题目:查找二叉树中最大元素题目:搜索二叉树中某个元素题目:向二叉树插入一个元素题目:获取二叉树节点个数题目:逆向逐层输出树中的元素原创 2017-05-09 22:01:18 · 500 阅读 · 0 评论 -
数据结构与算法(24)——堆习题
题目:请说明有N个元素的堆的高度为logN题目:给定一个最大堆,查找最小元素原创 2017-05-18 21:14:45 · 958 阅读 · 0 评论 -
数据结构与算法(10)——栈习题一
题目:回文字符串判断题目:设计一个可以把栈中元素按照升序排列的排序算法题目:给定一个栈,如何只使用栈操作(push和pop)逆置栈中的内容原创 2017-04-25 22:09:05 · 1248 阅读 · 0 评论 -
数据结构与算法(19)——二叉树习题二
题目:求已知二叉树高度/深度题目:删除二叉树中某个节点题目:用非递归算法获取二叉树叶子节点个数题目:用非递归算法获取二叉树满节点个数题目:用非递归算法获取二叉树半节点个数原创 2017-05-10 17:17:10 · 695 阅读 · 0 评论 -
数据结构与算法(28)——查找
无序线性查找(UnSorted Linear Search) 有序线性查找(Sorted Linear Search)二分查找(Binary Search)原创 2017-05-24 22:15:17 · 310 阅读 · 0 评论 -
数据结构与算法(29)——查找习题(一)
题目:给定一个长度为n的数组,给出一个算法,判定该数组中是否存在重复元素 题目:发现缺失的数:已知一个由n-1个取值范围在1~n的整数组成的列表。假设列表中没有重复的出现的整数,则列表的中缺失某个整数。原创 2017-05-24 22:22:04 · 614 阅读 · 0 评论 -
数据结构与算法(2)——算法的复杂度
算法的时间复杂度和空间复杂度合称为算法的复杂度。转载 2017-03-20 20:03:15 · 376 阅读 · 0 评论 -
数据结构与算法(3)——单链表
链表是一种用于存储数据集合的数据结构链表的基本操作主要有三个: 1. 遍历链表 2. 向链表中插入一个元素 3. 从链表中删除一个元素原创 2017-03-20 22:05:53 · 455 阅读 · 0 评论 -
数据结构与算法(4)——查找链表中倒数第n个结点
题目:查找链表中倒数第n个结点原创 2017-03-20 22:20:55 · 835 阅读 · 0 评论 -
数据结构与算法(7)——单链表习题二
题目1:假设两个单向链表在某结点相交后,成为一个新的单向链表。两个链表的头结点是已知的,但是相交的结点未知。也就是说,它们相交之前的结点个数是未知的,并且两个链表的结点数也可能不同。假设链表List1和链表List2在相交之前的结点个数分别为n和m,那么m可能等于或小于n,也可能大于n。找出两个链表的合并点。原创 2017-03-28 09:29:13 · 829 阅读 · 0 评论 -
数据结构与算法(8)——单链表习题三
题目:逐对的逆置链表;假设初始链表为1->2->3->4->X,逐对逆置后2->1->4->3->X原创 2017-03-28 21:34:01 · 435 阅读 · 0 评论 -
数据结构与算法(5)——判断链表中是否存在环
判断给定的链表是否存在环;原创 2017-03-22 17:19:12 · 592 阅读 · 0 评论 -
数据结构与算法(6)——单链表习题一
题目1:向有序链表中插入一个结点题目2:逆置单向链表题目3:从单链表尾部开始输出该链表原创 2017-03-23 20:52:46 · 666 阅读 · 0 评论 -
数据结构与算法(11)——栈习题二
题目:判定字符串中开闭分隔符是否匹配题目:中缀表达式转换成后缀表达式原创 2017-04-27 22:27:26 · 451 阅读 · 0 评论 -
数据结构与算法(12)——栈习题三
题目:单行的逆波兰表达式题目:计算中缀表达式结果原创 2017-04-28 20:51:42 · 409 阅读 · 0 评论 -
数据结构与算法(13)——队列
定义:队列是一种只能在一端插入(队尾),在另一端删除(队首)的有序线性表。队列的第一个插入的元素也是第一个被删除的元素。所以,队列是一种先进先出(FIFO,First In First Out)或后进后出(LILO,Last In Last Out)线性表。队列操作的专有名称向队列中插入一个元素,称为入队(EnQueue)从队列中删除一个元素,称为出队(DnQueue)试图对一个空队列执行出队原创 2017-04-30 21:22:22 · 498 阅读 · 0 评论 -
数据结构与算法(15)——队列习题二
题目:设计一个逆置队列元素的算法。题目:给定一个整数栈,如何检查栈中每对相邻数字是否是连续的。每对数字的值可以是递增或递减的。如果栈中的元素个数是奇数,那么组队时忽略栈顶元素。题目:给定一个整数k和一个整数队列,如何把队列中前k个元素逆置,其余元素保持不变?原创 2017-05-01 11:05:23 · 1448 阅读 · 0 评论 -
数据结构与算法(14)——队列习题一
题目:如何使用两个栈实现队列题目:如何使用两个队列来实现一个栈原创 2017-05-01 10:57:42 · 510 阅读 · 0 评论 -
数据结构与算法(26)——排序(一)
冒泡排序(Bubble Sort)是一种最简单的排序算法。选择排序(Selection Sort)是一种原地排序(即不需要额外的存储空间)算法,适用于小文件。插入排序(Selection Sort)是一种简单且高效的比较排序算法。典型的原地排序原创 2017-05-22 22:32:25 · 300 阅读 · 0 评论 -
数据结构与算法(20)——二叉树习题三
题目:判断给定的两棵树结构是否相同题目:二叉树的直径题目:判断是否存在路径的数据和等于给定的值;题目:计算二叉树所有节点之和原创 2017-05-12 20:47:30 · 489 阅读 · 0 评论 -
数据结构与算法(27)——排序(二)
希尔排序(Shell Sort)又称为缩小增量排序(diminishing increment sort)该算法是一种泛化的插入排序。归并排序(Merge Sort)快速排序(Quick Sort)也称为分区交换排序原创 2017-05-24 11:27:45 · 305 阅读 · 0 评论 -
数据结构与算法(25)——拓扑排序
本文将从以下几个方面介绍拓扑排序:拓扑排序的定义和前置条件和离散数学中偏序/全序概念的联系典型实现算法Kahn算法基于DFS的算法解的唯一性问题实际例子转载 2017-05-22 20:44:36 · 703 阅读 · 0 评论