随笔分类 - 算法题-剑指offer第二版
摘要:1.排序算法比较: 2.java实现 快排:
阅读全文
摘要:面试题10:斐波那契数列 题目要求: 求斐波那契数列的第n项的值。f(0)=0, f(1)=1, f(n)=f(n-1)+f(n-2) n>1 思路:使用循环从下往上计算数列。 考点:考察对递归和循环的选择。使用递归的代码通常比循环简洁,但使用递归时要注意一下几点:1、函数调用的时间和空间消耗;2、
阅读全文
摘要:描述:使用两个栈实现一个队列。队列中实现尾部插入和头部删除函数。 思路:stack1负责插入,stack2负责弹出,如果stack2为空了,将stack1的元素依次弹出并存放到stack2中,之后对stack2进行弹出操作。 考点:对栈和队列的理解;对泛型的使用等。
阅读全文
摘要:描述:给定一棵二叉树和其中的一个节点,找出中序遍历序列的下一个节点。树中应定义指向左节点、右节点、父节点的三个变量。 思路: 1.如果输入的当前节点有右孩子,则它的下一个节点即为该右孩子为根节点的子树的最左边的节点,比如2->5,1->3 2.如果输入的当前节点没有右孩子,就需要判断其与自身父节点的
阅读全文
摘要:描述:输入某二叉树的前序遍历和中序遍历结果,重建该二叉树。假设前序遍历或中序遍历的结果中无重复的数字。 思路:前序遍历的第一个元素为根节点的值,据此将中序遍历数组拆分为左子树+root+右子树,前序遍历数组拆分为root+左子树+右子树。再对左右子树进行同样的操作。 考点:对二叉树不同遍历方法的掌握
阅读全文
摘要:思想:前序(根左右),中序(左根右),后序(左右根) 前序非递归遍历: 首先判断根是否为空,将根节点入栈 1.若栈为空,则退出循环 2.将栈顶元素弹出,访问弹出的节点 3.若弹出的节点的右孩子不为空则将右孩子入栈 4.若弹出的节点的左孩子不为空则将左孩子入栈 5.返回1 后序遍历非递归: 前序:根-
阅读全文
摘要:描述:输入一个链表的头节点,从尾到头打印每个节点的值。 思路:从尾到头打印,即为“先进后出”,则可以使用栈来处理;考虑递归的本质也是一个栈结构,可递归输出。 考点:对链表、栈、递归的理解。
阅读全文
摘要:面试题5:替换空格 题目要求: 实现一个函数,把字符串中的每个空格都替换成“%20”,已知原位置后面有足够的空余位置,要求改替换过程发生在原来的位置上。 思路: 首先遍历字符串求出串中空格的数量,求出替换之后字符串的总长度(每替换一个空格,长度加2)。做法是从字符串的后面向前复制和替换。有2个指针p
阅读全文
摘要:面试题4:二维数组中的查找 题目要求: 一个二维数组中,每一行从左到右递增,每一列从上到下递增。输入一个整数,判断数组中是否含有该整数
阅读全文
摘要:面试题3:数组中重复的数 题目要求: 在一个长度为n的数组中,所有数字的取值范围都在[0,n-1],但不知道有几个数字重复或重复几次,找出其中任意一个重复的数字。 解法比较:
阅读全文
摘要:面试题2:实现单例模式 题目要求: 设计一个类,只能生成该类的一个实例。
阅读全文
摘要:面试题1:赋值运算符函数题目要求:为自定义类添加赋值运算符函数,考察一些细节点的书写。
阅读全文
摘要:借鉴几个写的比较好的博客,自己学习一遍,敲一遍代码记录一下。https://www.jianshu.com/p/010410a4d419 https://www.cnblogs.com/ik-heu/p/8462025.html#_lab2_0_3
阅读全文