![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
zxh1996
一个不断前进的小白
展开
-
剑指offer面试题8:二叉树的下一个节点
题目:给定一颗二叉树和其中的一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别指向左、右子节点的指针,还有一个指向父节点的指针。/** * @version 1.0 * @Author zjay * @Date: 2021/8/18$ * @Description: TODO * 题目:给定一颗二叉树和其中的一个节点,如何找出中序遍历序列的下一个节点? * 树中的节点除了有两个分别指向左、右子节点的指针,还有一个指向父节点的指针。 * 思路分析: * 关键点1:中序遍历的原创 2021-08-19 19:22:37 · 222 阅读 · 2 评论 -
剑指offer面试题7:重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,重建该二叉树。假设输入的前序遍历和中序遍历的结果都不包含重复的数字。例如,前序遍历{1,2,4,7,3,5,6,8},中序遍历{4,7,2,1,5,3,8,6},则重建该二叉树,并输出头节点。思路:根据根节点和根节点左右两边的值来确定左右子树,然后递归实现/** * @author: zjay * @version: 1.0 * @date: 2021/8/12 */public class Test7_BinaryTreeConstruct {原创 2021-08-19 19:21:37 · 173 阅读 · 0 评论 -
剑指offer面试题6:从尾到头打印链表
题目:输入一个链表的头节点,从尾到头反过来打印出每个节点的值。**注意:**面试中,如果打算修改输入的数据,最好先问面试官是否允许修改,如上题是否可以反转链表,改变原来链表的结构。思路1:从尾到头打印,即“后进先出”,可以采用栈实现。每经过一个节点,就入栈,遍历完整个链表的时候,依次输出栈顶的值。思路2:用递归实现,递归本质是一个栈结构。即每访问一个节点的时候,先递归输出该节点的后继节点,再输出该节点本身。import java.util.Stack;/** * @author: zjay原创 2021-08-19 19:20:43 · 175 阅读 · 0 评论 -
剑指offer面试题5 :替换空格
目:实现一个函数,把字符串中的每个空格替换成"20%".例如,输入"We are happy.",则输出为"We%20are%20happy."。思路1:根据java特性,可以利用StringBuilder()和StringBuffer();2:从后往前复制。**注意:**如果从前往后复制会重复复制(移动)数字或字符多次,可以考虑从后往前复制。/** * @author: zjay * @version: 1.0 * @date: 2021/8/10 * * 题目:实现一个函数,把字符串中原创 2021-08-19 19:19:20 · 99 阅读 · 0 评论 -
剑指offer面试题4: 二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:选取二维数组右上角或左下角的数字进行比较,以右上角(所在行最大,所在列最小)为例,若该数小于右上角,由于每列也是递增的,所以该数小于该列所有数,因此可以去掉该列,不在该列中比较。若该数大于右上角的数,说明该数不在此行(此时,右边的列已经全部去掉,只需往下查找即可)。依次类推,找到最后。若找到,则返回,没有,则失败。/* * 题原创 2021-08-19 19:16:39 · 116 阅读 · 0 评论 -
剑指offer面试题3:数组中的重复数字
知识:数组是最简单的一种数据结构,占据一块连续的内存并按顺序存储数据。创建数组时,需要首先指定数组的大小,然后根据大小分配内存。数组的空间效率不高,会有空闲区域没有充分利用。由于数组内存连续,可以根据下标在O(1)时间访问任意元素。可以用数组实现简单的哈希表:数组下标设为哈希表键值(Key),数组中每一个数字设为哈希表值(Value),形成“键-值”配对。题目1:在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,不知道有几个数字重复了和重复的次数。请找出数组种任意一个重复的数原创 2021-08-19 19:15:21 · 95 阅读 · 0 评论 -
剑指Offer面试题2:实现Singleton模式
题目:设计一个类,只能生成该类的一个实例背景:面试中很多公司喜欢问一些设计模式相关问题。常用模式中,Singleton是唯一一个用几十行代码能完整实现的模式。因此,写一个Singleton的类型很常见。知识:单例模式特点:单例类只能有一个实例单例类必须自己创建自己的唯一实例单例类必须给所有其他对象提供这一实例。单例模式保证了全局对象的唯一性,避免状态不一致。线程安全问题:在获取单例的时候,保证不能产生多个实例对象。同时,注意单例对象内的实例变量是会被多线程共享的。单例模式实现方法有5种。原创 2021-08-19 19:11:22 · 114 阅读 · 0 评论