![](https://img-blog.csdnimg.cn/20200311005149647.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
直通BAT算法精讲
直通BAT算法精讲代码
蜗牛不爱海绵宝宝
做一个有趣的人(大家可以关注我的GitHub:https://github.com/snail-wj/offer_demo,这个上面覆盖了剑指offer的所有解析以及参考URL,希望对大家面试有帮助)
展开
-
07-01.判断二叉树是否为平衡二叉树
题目 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 代码 class Solution { public boolean isBalanced(TreeNode root) { return pocess(root).isBalanced; } public class ...原创 2020-04-13 01:29:38 · 151 阅读 · 0 评论 -
06-03.统计完全二叉树的节点个数
题目 给定一棵完全二叉树的头节点head,返回这棵树的节点个数. 代码 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x;...原创 2020-04-12 16:58:54 · 188 阅读 · 0 评论 -
06-02.寻找元素最左出现的位置
1.题目 对于一个有序数组arr,再给定一个整数num,请在arr中找到num这个数出现的最左边的位置 代码 public int getLeftIndex(int[] array, int num) { int length = array.length; int left = 0; int right = length - 1; ...原创 2020-04-12 12:48:49 · 211 阅读 · 0 评论 -
06-01.寻找旋转排序数组中的最小值
题目 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 请找出其中最小的元素。 你可以假设数组中不存在重复元素。 示例1: 输入: [3,4,5,1,2] 输出: 1 示例2: 输入: [4,5,6,7,0,1,2] 输出: 0 代码 class Solution { publ...原创 2020-04-09 01:55:13 · 90 阅读 · 0 评论 -
05-01.K 个一组翻转链表
题目 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 示例: 给你这个链表:1->2->3->4->5 当 k = 2 时,应当返回: 2->1->4->3->5 当 k = 3 时,应当返回: 3...原创 2020-03-29 22:56:44 · 89 阅读 · 0 评论 -
04-04.滑动窗口最大值
题目 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 代码 class Solution { public int[] maxSlidingWindow(int[] nums, int k) { Deque<Integer> deque = new Li...原创 2020-03-29 02:22:28 · 115 阅读 · 0 评论 -
04-03.栈的逆序
题目 一个栈中的元素为整型,现在想将改栈从顶到低按从大到小的顺序排序,只能申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构,如何完成排序 代码 public static void sortStack(Stack<Integer> stack) { Stack<Integer> help = new Stack<>();...原创 2020-03-23 13:59:08 · 192 阅读 · 0 评论 -
04-02.栈的逆序
题目 实现一个栈的逆序,但是只能用递归函数和这个栈本身的操作来实现,而不能自己申请另外的数据结构 代码 public class ReverseStack { public int get(Stack<Integer> stack) { int result = stack.pop(); if (stack.isEmpty()) { ...原创 2020-03-23 11:33:33 · 186 阅读 · 0 评论 -
04-01.最小栈
题目 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。 代码 class MinStack { private Stack<Integer> dataStack = new St...原创 2020-03-23 01:25:54 · 82 阅读 · 0 评论 -
04.排序算法
时间复杂度为O(n^2) 1.冒泡排序 public void sort(int[] array) { for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j < array.length - 1 - i; j++) { if (arra...原创 2020-03-18 23:47:01 · 80 阅读 · 0 评论 -
03.序列化二叉树
题目 请实现两个函数,分别用来序列化和反序列化二叉树。 实现 public class Codec { // Encodes a tree to a single string. public String serialize(TreeNode root) { if(root == null){ return "#!"; }...原创 2020-03-18 21:54:18 · 69 阅读 · 0 评论 -
02.从上到下打印二叉树 II
题目 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 代码 class Solution { public List<List<Integer>> levelOrder(TreeNode root) { if(root == null){ return new ArrayList<List&...原创 2020-03-17 01:39:58 · 166 阅读 · 0 评论 -
01.重上到下打印二叉树
题目 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 思路 采用队列的方式即可,每弹出一个根节点,就将其左右子树入队列。 代码 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode ri...原创 2020-03-11 00:59:37 · 117 阅读 · 0 评论