自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 对称二叉树-LeetCode 101

题目题目内容很好理解,判断一棵树是镜像对称。思路根据题目,我们可以将问题等价为以下问题:对于一对左右节点:左右节点的值是否相等?左节点的右节点与右节点的左节点是否相等?左节点的左节点与右节点的右节点是否相等?如果对于所有对称位置的节点,都满足上述三个条件,那么这棵树即为对称二叉树。了解了等价问题后,剩下只需要深度优先遍历整棵树就好了,dfs分别传入一组对称位置节点(left, right)class Solution { public boolean isS

2021-05-29 11:41:56 132

原创 if和switch效率比较

翻了翻国外网站geeksforgeeks的解释,在比较情况大于5个时,switch效率更高,5个以下效率区分不明显。文章内容摘自以下链接:https://www.geeksforgeeks.org/switch-vs-else/原文:Speed:A switch statement might prove to be faster than ifs provided number of cases are good. If there are only few cases, it migh.

2021-02-17 17:16:51 2340 1

原创 BFS模板,广度优先遍历

BFS(Breadth-First Search)是常见算法之一广度优先遍历,即按层及顺序遍历。思路分析借助队列先进先出的特性,将当前一行的节点以此推入队列 在弹出这一行的每个节点的同时,将弹出节点的子节点推入队列(子节点属于下一行),从而实现广度优先模板如下public List<Integer> BFS(TreeNode root) { //定义一个数组接受每个节点的值 List<Integer> res = new ArrayList<&

2020-12-06 17:18:36 191

原创 Go语言基础-range关键字

range是Go语言常用的关键字,主要用于配合for关键字对数组,切片和映射等数据结构进行迭代。下面代码简单介绍了range关键字如何在数组中实现元素的遍历。package mainimport ( "fmt")func main() { var strs = [...]string{"a", "b", "c", "d", "e", "f"} for k, v := range strs { fmt.Println("index:", k, "value: ", v) }}

2020-11-29 13:27:27 487

原创 二叉树的前中后序遍历-递归实现Java

定义二叉树节点类public class TreeNode { //key为二叉树的节点的值 int key; TreeNode left; TreeNode right; public TreeNode(int key) { this.key = key; left = null; right = null; }}构建测试用二叉树其实前,中,后序的区别在于遍历根(父)节点与其左右节点的顺序不同,前序

2020-06-18 03:54:05 292

原创 Servlet详解

JavaWeb三大组件,三大组件分别是:Servlet程序、Filter过滤器、Listener什么是Servlet?Servlet是运行在服务器上的小型Java程序,通过HTTP接受和相应来自Web客户端的请求。如何实现Servlet程序*Tomcat配置此处略去。编写一个类去实现Servlet接口创建MyServlet类来实现Servlet接口,并重写Servlet中方法import javax.servlet.*;import java.io.IOException;publ

2020-06-15 02:34:53 2895 3

原创 Java线程池和自定义线程池

线程池线程池是一种线程使用模式。在线程池中维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。使用线程池不仅能够保证内核的充分利用,还能防止过分调度。WEB服务器完成网页请求这样的任务,使用线程池技术是非常合适的。线程池基础线程池是一种多线程的处理形式,处理过程可以将任务添加到队列,创建线程后自动启动这些任务。这里的任务是实现了Runnable或Callable接口的实例对象。为什么使用线程池?使用线程池可以根据需求和硬件灵活控制线程的数量,并且可

2020-06-13 07:38:38 661

原创 Lambda表达式详解

Lambda 简介Lambda表达式,也可以成为闭包。Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。Lambda对接口的要求不是所有的接口都可以使用Lambda表达式来实现。接口中只能有一个必须被实现的方法(抽象方法)。注解 @FunctionalInterface用于约束接口内抽象方法的个数,要求接口中的抽象方法只有一个。这个注解一般会和lambda表达式一起使用。加上这个注解后,如果接口内有两个抽象方法则会报错。Lambda基础语法语法形式为 () ->

2020-06-09 03:37:44 349

原创 JVM运行时数据区图解(总结自《深入理解Java虚拟机》)

JVM运行时数据区基本组成部分及其功能:*灰色部分为线程共享*蓝色部分为线程私有1. 程序计数器程序计数器(Program Counter Register)可以看作是当前线程所执行字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值Laura选取吓一跳需要执行的字节码指令。Java虚拟机的多线程是通过线程轮流切换、分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(单核)都只会执行一条线程中的指令。程序计数器可用于线程切换后能恢复到正确的执行位置,每条线程都需要一个

2020-06-05 03:06:03 287 2

原创 二叉树的分层遍历

二叉树的分层遍历二叉树的分层遍历, 换行打印。下面的代码将解释如何实现换行打印。分层遍历使用队列queue,按层次将节点推入队列,并在弹出时将节点的左右节点推入队列。换行打印使用for循环,定义n=队列长度,遍历该行的所有节点后,跳出for循环,打印换行,再重新赋值队列长度n,重新进入下一行的for循环。//定义Treenodeclass Treenode{ int val;...

2019-06-10 10:33:00 1845 1

空空如也

空空如也

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

TA关注的人

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