面试问题
Crystal_ting
个人博客 limengting.site
展开
-
《剑指offer》二叉搜索树的后序遍历序列
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if (sequence == null || sequence...原创 2018-05-02 14:42:38 · 229 阅读 · 0 评论 -
[4]《剑指offer》二叉树中和为某一值的路径
题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。import java.util.ArrayList;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = ...原创 2018-05-02 15:28:57 · 202 阅读 · 0 评论 -
[4]《剑指offer》二叉搜索树与双向链表
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。方法一:非递归版 解题思路: 1.核心是中序遍历的非递归算法。 2.修改当前遍历节点与前一遍历节点的指针指向。/**public class TreeNode { int val = 0; TreeNode left = null; ...原创 2018-05-04 20:20:53 · 251 阅读 · 0 评论 -
[4]《剑指offer》二叉搜索树的第k个节点
题目描述 给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(...原创 2018-05-04 22:48:59 · 222 阅读 · 0 评论 -
《剑指offer》复杂链表的复制
题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)方法一:使用HashMap,空间复杂度O(n)/*public class RandomListNode { int label; Random...原创 2018-04-27 16:11:22 · 212 阅读 · 0 评论 -
《剑指offer》两个链表的第一个公共节点
题目描述 输入两个链表,找出它们的第一个公共结点。根据提交结果来看,只需要考虑无环单链表:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { ...原创 2018-04-27 21:07:26 · 163 阅读 · 0 评论 -
《剑指offer》链表中环的入口节点
题目描述 一个链表中包含环,请找出该链表的环的入口结点。 方法一:空间复杂度O(n)/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/import java.util.HashSet;...原创 2018-04-27 21:18:09 · 170 阅读 · 0 评论 -
《剑指offer》包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。import java.util.Stack;public class Solution { Stack<Integer> data = new Stack<>(); Stack<Integer> min = new Stack<&原创 2018-04-27 21:46:19 · 149 阅读 · 0 评论 -
《剑指offer》平衡二叉树
题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。public class Solution { public static class ReturnData { public boolean isBalanced; public int height; public ReturnData(boolean isBalanced,...原创 2018-04-27 22:17:45 · 186 阅读 · 0 评论 -
《剑指offer》二叉树的深度
题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。方法一:递归,时间复杂度O(logn)/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public...原创 2018-04-27 23:12:37 · 188 阅读 · 0 评论 -
《剑指offer》树的子结构
题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val原创 2018-05-02 13:57:35 · 219 阅读 · 0 评论 -
《剑指offer》对称的二叉树
题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { ...原创 2018-04-30 17:40:42 · 168 阅读 · 0 评论 -
《剑指offer》二叉树的镜像
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义: 源二叉树: 8 / \ 6 10 / \ / \ 5 7 9 11镜像二叉树: 8 / \ 10 6 ...原创 2018-04-30 13:38:06 · 180 阅读 · 0 评论 -
面试常见算法2:对树的操作
1、树的遍历:先序/中序/后序/层次遍历package sword_to_offer_tree;import java.util.LinkedList;import java.util.Queue;import java.util.Stack;public class PreInPosLayerTraversal { public static class Node {...原创 2018-04-15 15:56:46 · 367 阅读 · 0 评论 -
面试常见算法1:排序算法
(1)冒泡排序:算法描述:从头开始,两两交换,大的沉底,每轮确定一个最大的数,每轮逐渐缩小范围end- -,直到end = 1,即只有两个数时间复杂度:O(n²)空间复杂度:O(1)稳定性:可以做到稳定的,遇到相等的后面的代替前面的沉底package sword_to_offer_sort;import java.util.Scanner;public class ...原创 2018-04-10 19:23:51 · 723 阅读 · 0 评论 -
《剑指offer》合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。递归版:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class So...原创 2018-04-21 23:36:01 · 224 阅读 · 0 评论 -
《剑指offer》链表中倒数第k个节点
题目描述 输入一个链表,输出该链表中倒数第k个结点。方法一: 思路:倒第k即正第size - k + 1,遍历链表两次,时间复杂度O(n)/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/...原创 2018-04-22 00:20:54 · 174 阅读 · 0 评论 -
Java知识点相关文章收集
1、Java底层相关(1)Java并发编程:volatile关键字解析 (2)Java中的异常 (3)Java内存模型 (4)并发与并行 并行是我们物理时空观下的同时执行,而并发则是操作系统用线程这个模型抽象之后站在线程的视角上看到的“同时”执行(时间片轮转后的) (5)同步与异步 同步:发送一个请求,等待返回,然后再发送下一个请求 异步:发送一个请求,不等待返回,随时可以再发送下一转载 2018-03-24 13:27:10 · 498 阅读 · 0 评论 -
JDK9 HashMap源码阅读笔记
参考博客: HashMap 在 JDK 1.8 后新增的红黑树结构HashMap源码:package java.util;import java.io.IOException;import java.io.InvalidObjectException;import java.io.Serializable;import java.lang.reflect.ParameterizedType;原创 2018-04-18 12:59:06 · 525 阅读 · 0 评论 -
面试常见算法3:对链表的操作
1,单/双链表的逆序package sword_to_offer_linkedlist;public class ReverseList { public static class Node { public int value; public Node next; public Node(int data) { ...原创 2018-04-18 16:45:44 · 273 阅读 · 0 评论 -
面试常见算法4:栈和队列
1、数组/栈/队列间的转换:1.1 固定数组实现栈结构:package sword_to_offer_stack_queue;public class UseArrayBuildArrayStack { // 固定数组实现栈 // 准备一个变量index,数组的大小设置为为栈的大小为initSize // 当要加一个数,index的含义为如果新来一个...原创 2018-04-18 16:48:27 · 426 阅读 · 1 评论 -
《剑指offer》把一棵二叉树打印成多行
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。import java.util.ArrayList;import java.util.Queue;import java.util.LinkedList;/*public class TreeNode { int val = 0; TreeNode left = null; Tree...原创 2018-04-30 12:21:19 · 220 阅读 · 0 评论 -
《剑指offer》从上到下打印二叉树
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}...原创 2018-04-29 16:37:37 · 180 阅读 · 0 评论