02 2019 档案
摘要: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. 面向对象和面向过程的区别 面向过程 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 缺点: 没有面向对象易维护、易复用、易扩展 面向对象 优点: 易维护、易复用、易扩展,由于面
阅读全文
摘要:描述:给定一棵二叉树和其中的一个节点,找出中序遍历序列的下一个节点。树中应定义指向左节点、右节点、父节点的三个变量。 思路: 1.如果输入的当前节点有右孩子,则它的下一个节点即为该右孩子为根节点的子树的最左边的节点,比如2->5,1->3 2.如果输入的当前节点没有右孩子,就需要判断其与自身父节点的
阅读全文
摘要:描述:输入某二叉树的前序遍历和中序遍历结果,重建该二叉树。假设前序遍历或中序遍历的结果中无重复的数字。 思路:前序遍历的第一个元素为根节点的值,据此将中序遍历数组拆分为左子树+root+右子树,前序遍历数组拆分为root+左子树+右子树。再对左右子树进行同样的操作。 考点:对二叉树不同遍历方法的掌握
阅读全文
摘要:思想:前序(根左右),中序(左根右),后序(左右根) 前序非递归遍历: 首先判断根是否为空,将根节点入栈 1.若栈为空,则退出循环 2.将栈顶元素弹出,访问弹出的节点 3.若弹出的节点的右孩子不为空则将右孩子入栈 4.若弹出的节点的左孩子不为空则将左孩子入栈 5.返回1 后序遍历非递归: 前序:根-
阅读全文
摘要:描述:输入一个链表的头节点,从尾到头打印每个节点的值。 思路:从尾到头打印,即为“先进后出”,则可以使用栈来处理;考虑递归的本质也是一个栈结构,可递归输出。 考点:对链表、栈、递归的理解。
阅读全文
摘要:面试题5:替换空格 题目要求: 实现一个函数,把字符串中的每个空格都替换成“%20”,已知原位置后面有足够的空余位置,要求改替换过程发生在原来的位置上。 思路: 首先遍历字符串求出串中空格的数量,求出替换之后字符串的总长度(每替换一个空格,长度加2)。做法是从字符串的后面向前复制和替换。有2个指针p
阅读全文
摘要:最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下,便于大家观看,也便于加深自己学习过程中对这些知识点的记忆,如果哪里有误,恳请指正。 这三个类之间的区
阅读全文
摘要:看代码: String s = "my.test.txt"; System.out.println(s.replace(".", "#")); System.out.println(s.replaceAll(".", "#")); System.out.println(s.replaceFirst(
阅读全文
摘要:面试题4:二维数组中的查找 题目要求: 一个二维数组中,每一行从左到右递增,每一列从上到下递增。输入一个整数,判断数组中是否含有该整数
阅读全文
摘要:面试题3:数组中重复的数 题目要求: 在一个长度为n的数组中,所有数字的取值范围都在[0,n-1],但不知道有几个数字重复或重复几次,找出其中任意一个重复的数字。 解法比较:
阅读全文