摘要: 输一个链表的头结点,从尾到头反过来打印出每一个节点的值. 节点定义如下 思路 从头到尾遍历链表,把每个节点放入栈中,遍历完后,从栈顶开始逐个输出节点的值, 此时输出的节点的顺序已经反过来了 实现 递归的本质就是一个栈结构,于是要使用递归来实现,我们每访问到一个节点的时候, 先递归输出它后面的节点,再 阅读全文
posted @ 2019-09-04 19:46 tangmeng 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 1. 符号表算法比较 | 算法 | 插入 | 查找 | 是否有序 | | | | | | | 链表实现的无序符号表 | N | N | yes | | 二分查找实现的有序符号表 | N | logN | yes | | 二叉查找树 | logN | logN | yes | | 2 3 查找树 | 阅读全文
posted @ 2019-09-04 19:00 tangmeng 阅读(727) 评论(0) 推荐(0) 编辑
摘要: 散列表类似于数组,可以把散列表的散列值看成数组的索引值。访问散列表和访问数组元素一样快速,它可以在常数时间内实现查找和插入操作。 由于无法通过散列值知道键的大小关系,因此散列表无法实现有序性操作。 查找 用散列函数将被查找的键转化程数组的一个索引(理想状态下,不同的键都能转化为不同的索引值。当然这只 阅读全文
posted @ 2019-09-04 18:34 tangmeng 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 前序遍历:中左右 中序编列:左中右 后续编列:左右中 测试用例 输出 阅读全文
posted @ 2019-08-31 19:52 tangmeng 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,则输出“We%20are%20happy.”。 思路 先遍历一次字符串,统计出字符串中空格的总数,并计算出替换之后的字符串的总长度,每替换一个加2 然后准备两个指针p1,p2 p1指向原始字符串的末尾,p2 阅读全文
posted @ 2019-08-31 14:25 tangmeng 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路 在矩阵的右上角开始查找 大于剔除当前列 小于剔除当前行 等于返回true 实现 测试用例 输出 阅读全文
posted @ 2019-08-31 12:52 tangmeng 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 在一个长度为n+1的数组里的所有数字都在1到n的范围内,所以数组中至少有一个数字是重复的。 请找出数组中任意一个重复的数字,但不能修改输入的数组。 例如,如果输入长度为8的数组{2, 3, 5, 4, 3, 2, 6, 7},那么对应的输出是重复的数字2或者3。 思路 按照 二分查找 的思路 数组长 阅读全文
posted @ 2019-08-31 09:49 tangmeng 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 在一个长度为n的数组里的所有数字都在0到n 1的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了, 也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3}, 那么对应的输出是重复的数字2或者3。 实现 数组排序 阅读全文
posted @ 2019-08-30 16:39 tangmeng 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 二叉树 ,每个节点只有一个父节点(根节点除外),每个节点都只有左右两个链接,分别指向自己的左子节点和右子节点 二叉查找树 (BST)是一颗二叉树,并且每个节点的值都大于等于其左子树中的所有节点的值而小于等于右子树的所有节点的值。 二叉树遍历 前序遍历:中左右 中序编列:左中右 (BST中序编列是 递 阅读全文
posted @ 2019-08-29 16:37 tangmeng 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 符号表是一种存储键值对的数据结构,支持两种操作, 插入(put) 将新的键值对存入表中 查询(get) 给定键得到相应的值 规则 重复的键 每一个键只能对应着一个值(表中不允许存在重复的键) 当存入的的键值对和表中已有的键冲突时,新的值会替代旧的值 空键 键不能为空,使用空键会产生一个运行异常。 空 阅读全文
posted @ 2019-08-27 19:32 tangmeng 阅读(670) 评论(0) 推荐(0) 编辑