2019-12-26 数据结构与算法 Java实现堆排序 背景 过完年就要春招了,数据结构和算法是面试中的重要内容,尤其是数据结构。趁着最近已经基本没课,时间比较多,学习一些比较常见的算法。今天刚学会堆排序,写篇博客记录一下。 描述什么是堆? 学习堆排序,那我们首先得知道,什么是堆。堆其实就是一棵完全二叉树,分为两种: 大根堆:每个根节点的值都比它左右节点的值要大; 小根堆:每个根节点的值都比它左右节点的值要小... 阅读全文…
2019-12-26 数据结构与算法 高效算法求解数独 背景 之前上python课的时候,有一次实验是求解数独,要求时间复杂度要低;为此老师讲解了一个高效的数独算法,我觉得算法挺有意思的,写篇博客记录一下。 描述首先需要知晓数独的两个规则: 若某个位置的值已经确定,那么,和这个位置在同一行,同一列,同一个3×3的格子,都不能填写这个值,比如,九宫格(1,1)位置的值为2,那么,第一行,第一列,以及第一个3×3的格子里,... 阅读全文…
2019-11-28 JavaSE Java创建List、Map等集合对象的同时进行赋值操作 问题简介 在Java当中,若希望在创建数组的同时给数组赋值很简单,可以想下面这样: 12int[] num = {1,2,3};String strs = {"a", "b", "c"} 但是,如果我们创建List集合,或者Map集合时,也想快速地为它赋初始值,应当如何做呢? 解决方式方式1:调用函数... 阅读全文…
2019-10-09 JavaSE 继承内部类时使用外部类对象.super()调用内部类的构造方法 问题简介 今天在看《Java编程思想》的时候,看到了一个很特殊的语法,懵逼了半天——一个派生类继承自一个内部类,想要创建这个派生类的对象,首先得创建其父类的对象,也就是这个内部类,而调用内部类的构造方法创建其对象的语法,是外部类对象.super(); 问题分析 我们都知道,在Java当中,当我们创建一个类的对象时,在构造方法的第一行会默认的调用... 阅读全文…
2019-07-24 JavaWeb HttpServlet中service方法的源码分析 前言 最近在看《Head First Servlet & JSP》这本书, 对servlet有了更加深入的理解。今天就来写一篇博客,谈一谈Servlet中一个重要的方法——service方法。 介绍 当浏览器对servlet发起请求时,web容器会开启一个新的线程,或者是从线程池中分配一... 阅读全文…
2019-07-23 数据结构与算法 根据先序遍历和中序遍历建立二叉树 问题 已知一棵二叉树的先序遍历以及中序遍历,重建二叉树。二叉树的每一个节点有三个属性,左子节点,右子节点,以及节点值。 思路先序遍历服从规则“根左右”,所以由此可知,对于一个先序遍历得到的数组,第一个元素一定是根节点; 中序遍历服从规则”左根右“,所以由此可知,对于一个中序遍历得到的数组,根节点左边的元素都属于根节点的左子树,而根节点右边的元素都属于根节点的右子树; 所以,我们... 阅读全文…