自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 二叉树之遍历

2021.11.28所有递归问题都可以抽象为二叉树的遍历。1、二叉树的前序遍历给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]思路递归临界条件:root = nullclass Solution { public List<Integer> preorderTraversa

2021-11-29 09:28:14 520

原创 leetcode刷题之二叉树

递归算法的关键**首先:明确函数定义,相信这个定义,不要**跳进递归。**其次:**搞明白root节点自己要做什么,然后根据题目要求选择前中后序递归框架。**最后:**思考出每个节点需要做什么,刷题。习题1:翻转二叉树首先,明确函数定义即,交换根节点的左右节点位置,返回翻转后的节点。其次,明确root自己做什么他要交换它的两个子节点,故选择前序遍历再者,明确子节点都要做什么让每个子节点都去翻转他们的左右子节点。最后,明确边界条件当root == null时,证明执行到了叶子节点,终

2021-11-11 23:17:02 4210

转载 刷题技巧之二叉树

递归算法的关键**首先:明确函数定义,相信这个定义,不要**跳进递归。**其次:**搞明白root节点自己要做什么,然后根据题目要求选择前中后序递归框架。**最后:**思考出每个节点需要做什么,刷题。习题1:翻转二叉树首先,明确函数定义即,交换根节点的左右节点位置,返回翻转后的节点。其次,明确root自己做什么他要交换它的两个子节点,故选择前序遍历再者,明确子节点都要做什么让每个子节点都去翻转他们的左右子节点。最后,明确边界条件当root == null时,证明执行到了叶子节点,终

2021-11-07 18:34:10 216

原创 深入JVM之字节码执行引擎

虚拟机字节码执行引擎8.1、概述Java的虚拟机字节码执行引擎是基于栈的字节码解释执行引擎。8.2、运行时栈帧结构Java虚拟机,以方法作为最基本的执行单元,栈帧是支持虚拟机进行方法调用和方法执行背后的数据结构。它是虚拟机运行时数据区的Java虚拟机栈的元素。每一个栈都是线程私有的。8.2.1、局部变量表局部变量表,顾名思义,用于存放方法和参数中的局部变量。局部变量表以变量槽为最小单位存储变量,32位的数据类型占一个变量槽,64位占用两个变量槽。由于局部变量表是建在Java虚拟机栈中的,

2021-11-06 17:34:38 120

原创 深入JVM之:虚拟机类加载机制

虚拟机类加载机制7.2、虚拟机类加载时机加载,验证,准备,初始化,卸载是固定的。什么时候加载,都可,虚拟机规范未制定。但是什么时候初始化,严格规定。遇到 new getstatic putstatic invokestatic 这四条字节码指令,若类型未初始化,需要先出发其初始化阶段。使用new实例化对象时。读取或设置一个类型的静态字段。调用一个类的静态方法时。使用反射包进行反射调用时。在初始化类时,若发现其父类未被初始化,则先初始化其父类。虚拟机启动时,用户指定一

2021-11-06 17:31:58 303

原创 深入JVM之虚拟机类加载机制

虚拟机类加载机制7.2、虚拟机类加载时机[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传加载,验证,准备,初始化,卸载是固定的。什么时候加载,都可,虚拟机规范未制定。但是什么时候初始化,严格规定。遇到 new getstatic putstatic invokestatic 这四条字节码指令,若类型未初始化,需要先出发其初始化阶段。使用new实例化对象时。读取或设置一个类型的静态字段。调用一个类的静态方法时。使用反射包进行反射调用时。在初始化类时,若发

2021-10-29 19:41:00 113

原创 leetcode 二叉树遍历

1、前序遍历1、迭代思路:通过双向队列Deque来模拟栈两层while循环,外层判断是否遍历结束,内层判断是否到达最左节点未到达就一直找左子树,每一个都存入list中。到达根节点,出栈,判断该节点是否有右子树,遍历右子树的左子树。。。循环结束,迭代完毕。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeN

2021-10-22 21:16:53 80

原创 深入Java虚拟机之Java内存区域

Java内存区域2.1、运行时数据区域1、程序计数器当前线程所执行的字节码的行号指示器字节码解释器工作时就是通过改变这个计数器的值来选取吓一跳需要执行的字节码指令。是线程私有内存,每条线程都有一个独立的程序计数器。作用:若正在执行的一个java 方法,那么这个计数器记录的是正在执行的虚拟机字节码指令的地址。若执行的是native方法,则为undefined,为空。2、Java虚拟机栈也是线程私有,生命周期与线程相同。虚拟机栈描述的是Java方法执行的线程内存模型。每个方法

2021-10-20 10:18:09 101

原创 leetcode 第二天 合并两个有序数组

合并两个有序数组给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。示例 1:输入:nums1 =

2021-10-18 23:01:03 101 1

原创 数据结构 10/17

1、栈Stack先进后出,LIFO在Java中,我们用链表来实现栈和堆。原因:可存储任何类型数据。不受数组空间定长的限制。所需的空间总是和集合的大小成正比。操作所需的时间和集合的大小无关。栈的Java实现public class Stack<T> { //定义头节点 private Node first; //定义存储容量 private int N; //定义节点,存储数据和指向下一个元素的指针 class Node{

2021-10-17 21:13:40 42

原创 排序算法 10/17

1、选择排序时间复杂度为o(n^2)public class SelectSort { public static int[] sort(int[] arr){ //初始化最小下标 int minIndex = 0; //外层循环逐个取得需要逐次比较的下标 for (int i = 0 ; i < arr.length ; i++){ //将i赋给最小下标 minIndex =

2021-10-17 21:12:05 55

原创 Java集合

一、集合概述我们要对对象进行存储数组弊端:声明时长度就固定数组声明的时候的类型,就决定了元素初始化的类型。不利于扩展,不便于进行添加,删除,插入等操作,效率低。集合Java集合类可以用于存储数量不等的多个对象,还能保存具有映射关系的关联数组。使用场景:客户端服务端交互,用集合List存储json对象。CollectionMap二、Collection接口是List Set 和 Queue 接口的父接口,这里定义的方法可用于操作他们仨。泛型。1、接口方

2021-10-16 22:14:52 310

原创 leetcode 第一天

1、旋转矩阵旋转矩阵给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]示例 2:给定 matrix =[ [ 5, 1, 9,11], [ 2, 4, 8,10], [13, 3, 6, 7],

2021-10-16 21:36:45 53

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除