自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 哈夫曼树

1. 首先要知道扩充二叉树的概念扩充二叉树:在原有的二叉树上面,添加叶节点;使原有的节点都变成度数为2的分支节点;这样得到的树就是扩充二叉树扩充二叉树中;所有新增的节点就是外部节点;原有的节点就称为内部节点;由于前面的公式:叶节点的数量 n1 = 分支节点数量 n2 + 1 ,我们可知道对于扩充二叉树来说,就是外部节点 = 内部节点 + 1外部路径长度E:是树根到每一个外部节点的路径长...

2018-09-25 17:16:21 3880 1

原创 平衡二叉树

引出:同样是12个月份数据,用不同的二叉树组成方式,他们的平均查找深度都不一样:对于第一棵树:平均查找深度 = (1x1 + 2x2 + 3x3 + 3x4 + 2x5 +1x6)/12 = 3.5第二棵树:3.0第三棵树:6.5由此我们看出:越是平衡的树,查找效率越高。1. 平衡二叉树概念在二叉搜索树的基础上:左右两个子树的平衡因子 <= 1;这里的子树是包...

2018-09-19 15:35:56 4401 2

原创 搜索二叉树

1. 二叉搜索树概念:查找插入与删除操作:1. 查找2. 查找最大最小值 3. 插入 4. 删除  5. 具体实现代码如下:# 节点类建成的二叉树# 用已经建成的二叉搜索树 实例,作为输入from queue import Queuequeue = Queue()class BinTree: def __init__(...

2018-09-17 10:45:39 5425

原创 二叉树遍历

1. 基于递归的前序遍历 代码实现如下:# 二叉树的构建class BinTree: def __init__(self, data, left=None, right=None): self.data = data self.left = left self.right = right# 操作函数def count...

2018-09-17 10:43:55 163

原创 树的定义/性质/实现

一种层次数据结构:很多时候在管理上比线性表更为高效。1.树的定义:由有限个节点以树的连接方式的集合:有一个唯一的根节点,若干个子树,其中每一个子树也有唯一的根节点,这个根节点下又分为若干的子树的递归定义2. 有关树的基本术语:节点的度  树的度 根节点 叶节点 分支节点 父节点 子节点 兄弟节点 子孙节点 祖先节点 节点的层次(根节点层次是1) 路径  路径长度 树的深度3. 二叉...

2018-09-16 11:59:55 710

原创 优先队列

1.优先队列的概念优先队列也是和栈/队列一样的缓存结构,但是它的独特点在于:每个进入缓存的元素都会附有一个数值,这个数值代表着取用时的先后顺序。举一个简单的例子:我把附带优先数值2 3 1 5 4的元素,依次放入优先队列;尽管先放进去的是附加值为4的元素,但是它不会像队列一样,最先被取出;尽管最后放入的是附加值为2的元素,但是它也不会像栈一样,优先被弹出;它的正确取出方式是按照附加值从小到...

2018-09-15 21:00:59 444

原创 迷宫问题求解实现

1.思路:可以敏锐的察觉,迷宫这个问题可以采用递归的思路查询当前位置是否是出口 是:返回True  否:继续查找本位置的四个邻边位置 用for 循环 每一个邻边位置都要找 if 一旦有找到,立即停止搜寻。返回True 在程序最后还没有返回True 只好返回 Flase从这个递归过程,让我再一次深刻认识到递归的实现过程:从最简单的情况开始,返回结果 如果没有到达,最简单的情况...

2018-07-06 23:33:20 1031

原创 队列的两种实现方式

1. 线性表的实现 # 队列的顺序表实现# 值得注意的是,为了节省list的空间,申请固定的list长度#用以形成循环顺序表队列十分有必要。class Lqueue(): def __init__(self,capcity): # 队列的容量 self.list = (capcity+1)*[0] # 申请空间 self.en_p = ...

2018-07-06 09:59:02 819

原创 栈的两种实现方式

1. 基于线性表的实现# 栈的顺序表实现# 1 是否空 2 是否满 3 压入 4弹出 5 查询最顶元素class St_list: def __init__(self,max_): self.max=max_ self.elems=[None]*self.max self.top=-1 def is_empty(self):...

2018-07-05 19:27:15 1364

原创 1.1 线性表

1.1.1 顺序表和链表都是线性表的一种。那么什么是线性表?线性表:同类型数据元素有序的线性(一维) 结构。它是一种数据结构:①名字:线性表②对象:n个元素构成的有序序列③操作:查找,删除,插入,添加。1.1.2 线性表的存储实现方式1----顺序表1.1.2.1在用python实现顺序表的各种操作之前,我们需要学习python已有的顺序表list,有助于我们写出自...

2018-06-18 18:49:35 273

原创 LeetCode-70 爬楼梯

题目描述:思路想法:这道题,用递归无疑是最不费脑子的。假设现有 10个台阶,我最后可以走1步,也可以走2步;走1步的话递归9个台阶;走两步递归8个台阶;但是提交发现超时了。这个时候当然是动态规划的阉割版啦;用hash表保存下记录嘛,省的每次都傻乎乎的去递归;Java 代码:class Solution { public int climbStairs(...

2019-05-22 12:13:09 335

原创 LeetCode-69 x的平方根

题目描述:思路想法:暴力求解法,从 0 - x/2+1 我们从小到大遍历每个数,看看有哪个数是满足 k*k==x 返回 k ; 或者k*k>x && (k-1)*(k-1)<x 返回k-1;复杂读O(n); 但是要注意 k*k 可能会溢出;使用 long 代替 int ; 或者 使用变相的判断 k == x/k;二分查找的方法:本题是满足二分查找...

2019-05-22 12:01:01 271

原创 LeetCode-53 最大子序和

题目描述:思路想法:我们可以从头开始遍历,仍然是数组模块的思想,把遍历指向的当前元素和已经形成的子数组分成两个模块A,B(注意:B模块初始为空);我们只需要考虑:什么时候舍去B模块的这个大尾巴;在加入A模块时,新的B模块是否大于0;大于0就加入,否则不该加入A。并且B模块在此发生断裂,这时我们需要记住B模块存在过的最大值,然后,继续往后遍历。最后我们得到了很多个 B 模块的最大值,...

2019-05-17 17:31:08 282

原创 核心技能点-二分查找

二分是针对一个有序的数组中的查找,每次搜索都可以将搜索空间减半;效率可见一斑。但是,写出一个不出bug,简洁,优雅的代码并不容易,接下来,我们来分析一下:中间下标:mid对于一个数组来说,比如:[1, 4, 5, 6] 或 [1, 4, 5, 6, 7] 我们定义中位数有两种:第一种为 下中位数:(length-1)/ 2;第二种为 上中位数:length / 2;...

2019-05-13 11:28:18 443

原创 LeetCode-35 搜索插入位置

题目描述:思路想法: 无疑是利用二分查找了,但是,当一个不存在数组中的元素,应该如何确定它在数组中的位置呢? 二分法在跳出循环时,说明这个元素没有在数组当中,但是,在跳出来之前,left和right即为相邻的元素; 当用target目标元素和mid比较的时候,target比中间的大应该选没跳出循环时的右边,否则选左边作为插入位置。Java 代码:cl...

2019-05-13 09:27:54 203

原创 LeetCode-27 移除元素

题目描述:思路想法: 如果能够领会数组中的模块思想这道题就可以秒杀了; 我们把数组中每一个坑位都当作是必须被重新填的坑位,这是一个模块; 我们把原数组当成手中的袋子的资源;对于第一个坑位来说,我们要做如下判断,1.袋子里的第一个元素是不是要删除的元素; 是的话直接舍弃这个元素,考虑第二个资源元素;不是的话填入坑位; 同样,考虑第二个坑位,这...

2019-05-13 09:13:01 156

原创 LeetCode-26 删除排序数组中的重复项

题目描述:思路想法: 其实这道题不难,但重要的是建立模块思维。 我们把原数组的每一个坑位当成一个模块,这个模块是我们需要一个一个的去填满的,而且要满足不重复; 另一个模块就是我们手中的袋子,这个袋子里装满了一个有序但重复的可用资源; 我们先把袋子里第一个元素填入第一个坑位,然后袋子里第二元素和刚刚填的元素比较,若相同,直接舍弃,若不同,放入第二个坑...

2019-05-13 08:57:53 144

原创 LeetCode-21 合并两个有序链表

题目描述:思路想法: 新链表的首节点应该为两个旧链表中首节点较小的那个; while 循环依次比较两个链表节点的大小,将较小节点加入新的链表,该较小节点所在的旧链表更新为下一个节点; 循环直到其中一个链表的空节点,并判断是哪一个旧链表为空,将另一个旧链表作为新链表的结尾。Java 代码: /** * Definition for sin...

2019-05-13 08:40:19 155

原创 Java 数据结构与算法面试 链表

手写链表的Java实现package test;class Node{// 数据域 private Object ele;// 指针域 private Node node;// 默认构造器,标准构造器 public Node() { this(null,null); } public Node(Object ele,Node node) { this.ele=e...

2019-03-16 14:29:35 266

原创 Java 内部类

为什么有内部类?因为类的设计需要,比方说:我们现在要设计一个 宠物鸟类;那么这个类需要设计在 鸟笼类内部;这样内部类可以方便的访问到外部类的实例属性,比如主人给的鸟食,水等(想想如果放在外部,还需要先new一个鸟笼对象才行)。一个最简单的内部类class Outter{ private int a=1; // 内部类 class Inner{ }}内部类与其外部类的...

2019-03-07 19:29:39 167

原创 Java 的 Comparator 接口详解

Comparator 接口产生背景是排序默认的 compareTo 方法是比较 字符码值大小;如果我们需要实现比较字符的长度比较排序:在 Arrays.sort(数组对象,一个实现了Comparator的比较器):这个比较器一般这么写:...

2019-03-06 18:38:18 500

原创 Java 相等测试

equals 方法对于任何一个类来说,都有equals 方法。因为它们都继承子Object这个超类。但是,并不是所有类的equals方法都会比较对象的状态;只有重写了Object的equals方法的子类,才会比较内容,而非单单的引用地址。如何重写equals方法呢?对4)的补充:重写equals方法还需要再重写 hashcode方法?是的。因为,当对象在 set...

2019-03-02 11:06:54 321

原创 JVM Class 类加载机制(系列号3)

类加载的过程加载是类加载的一个阶段;虚拟机在运行时把描述类的信息的class文件数据加载进入内存,并对数据进行验证,准备,解析,初始化,使用与卸载七个阶段。其中验证,准备,解析,三个阶段合起来称作为连接。类加载到初始化这一阶段结束。加载:加载期间,虚拟机执行三件事:通过全类名获得class文件的二进制流;将字节流的静态数据结构转化为运行时的数据结构;在内存中(经常在方法区)生成这个...

2019-02-28 21:26:24 238

原创 JVM Class 类文件结构 (系列号2)

Class 文件的基本介绍class 文件是一组以8字节为基本单位的二进制流。各个数据按照顺序紧凑的排列在class文件之中。遇到大于8字节的数据会分成若干个8位数据。下图就是class文件中的数据:魔数:类的识别号,就好比 文件的尾缀。但是这里是放在前面。 Class版本号:注意JDK可以向前兼容版本,但是无法向后兼容Class文件。 Class文件常量池入口:注意与运行时...

2019-02-28 16:38:31 188

原创 JVM Java内存区域 与 内存溢出 (系列号1)

运行时数据区域运行时的数据区域,就是JVM管理的内存区域。JVM 运行程序的时候,管理着运行时的内存(一般以静态的 main 方法进入本类的运行时数据区,几乎所有Java程序都是从此开始,也就是说这里的 “运行时的数据区域” 就是一个程序甚至是一个项目的内存开辟起始区,逻辑上不会有第二个与此不连通的区域了 )。JVM 将内存划分为多个不同的数据区域。这些不同的数据区域有着自己的创建和销毁时间,...

2019-02-27 22:14:36 176

原创 Spring 基础 编写基本的控制器(系列号3)

回顾前面我们已经搭建好了一个基于 Maven 的最基本的Spring以及Spring MVC 环境。接下来,我们就在这个环境下来 “布置” 出我们最基本的控制器。 请求处理的位置我们熟悉最简单的一个控制器应该是这样的:package com.twm.bookmvc;import org.springframework.stereotype.Controller;imp...

2019-02-25 23:48:48 266

原创 Spring 基础 用mock对Controller执行测试(系列号4)

为什么需要用 mock 去测试控制类因为用 mock 可以模拟 http 请求,这样就不用老是开启服务测试啦...注意:在此之前需要在pom中添加mvc测试包的依赖。 &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring...

2019-02-25 20:05:47 552

原创 1. SSM 环境搭建(终极无错版)

  

2019-02-11 23:19:01 204

原创 3.SpringBoot+Redis

说明:这是一篇系列文章,需要前几篇的基础才比较容易理解,或者已经对 Maven和idea比较熟悉的读者阅读。 到底什么是redis?基于内存的数据库,可供程序快速访问。一般用于存储经常被用户访问的数据。以减少服务器对mysql的读写压力。提升整个网站的性能和用户体验。其次,redis是一种 nosql数据库 ( 以键值对来存储数据 ):是 not only sql 的意思。在特...

2019-02-10 10:18:04 190

原创 学习方法

针对 Java 这门语言来说: 先看书,针对某个特定的知识点。然后在清晰的罗列在自己的笔记上,不懂的地方要弄懂,(可以看网上的博客)附上代码。附上自己做的图示。第一次做笔记务必细心 反复的看自己的笔记,并结合自己新的理解,修改笔记。 完成一些笔试题。...

2019-02-09 15:36:05 174

原创 2. SpringBoot +Mybaits

参考资料:http://www.mybatis.org/mybatis-3/zh/getting-started.html                 公众号:御风大世界1. Mybaits 到底是什么?2. mybaits的基本构成与操作(idea)先通过官网找到依赖坐标,放到pom文件内:&lt;dependency&gt;  &lt;groupId&gt;...

2019-02-08 20:22:32 184

原创 1. InteliJ IDEA 下 的SpringBoot

目录: 下载安装 IDEA IDEA和eclipse项目结构上的区别 新建一个Maven web 项目 新建一个 springboot 模块 添加springboot的常用依赖,丰富springboot的功能。下载安装 IDEA学生可以使用免费的idea哦。安装方法:https://blog.csdn.net/ciwushini/article/details/7824086...

2019-02-07 14:13:11 262

原创 Jsp Servlet 个人博客

前言说明:2019.01.31 更新...这个项目只要是基于jsp和servlet的个人博客项目,目前只实现了基本的几个功能:注册,登录,发表,查看,根据cookie和session记住用户密码,维持登录状态等。后面应该会以较高的更新频率继续完善 文本编辑,用户管理等一系列功能。博客效果预览:(首页外观参考:http://how2j.cn/k/boostrap/boostra...

2019-01-27 14:18:08 4704 4

原创 JSP环境搭建和入门

参考资料:1. 谷志峰《JSP程序设计实例教程》和其PPT                 2. 视频资料:https://www.bilibili.com/video/av29086718/?p=1静态网页和动态网页区分他们主要是,是否根据 时间,地点,用户的不同而产生不同。并且,动态网页需要服务器脚本语言 JSP 环境搭建(  JDK、 Tomcat、 Eclipse)...

2019-01-11 20:53:25 402 1

原创 数据库基础知识——参考数据库基本概念6版

目录: 基本概念:数据抽象:为了让复杂的数据库系统能够面对开发人员,数据库层面上定义了三个层次的抽象:物理层抽象,逻辑层抽象,视图层抽象。(注意:一个数据库当中,物理层和逻辑层仅有一个;但视图可以有多个) 数据库实例:特定时刻数据库中信息的状态 数据库模式:数据库的总体设计称为模式,就好比 程序设计语言里的 变量们,它们的类型是确定的,但是某一时刻存储的值是变化的。 数据模型:描...

2018-11-28 16:03:26 420

原创 Python panads数据处理二

基于pandas DF的数据规整:清理,转化,合并,重塑。大多时候存放在数据库中的原始表格数据不能满足某次数据处理的要求;或者你需要更改原始的数据表现形式,都需要进行数据的整理。合并数据集(DF表格  merge, concat...)mergepandas.merge:根据一个或多个不同的键将不同的DataFrame中的行连接起来(沿y轴续表)。情形一理解:pd.merge...

2018-11-27 22:23:17 403

原创 Python panads数据处理一

文件读入Pandas可以将读取到的表格型数据(文件不一定要是表格)转成DataFrame类型的数据结构,然后我们可以通过操作DataFrame进行数据分析,数据预处理以及行和列的操作等。1、read_csv函数功能:从文件、URL、文件新对象中加载带有分隔符的数据(无论文件尾缀是什么),默认分隔符是逗号(可以更改参数 sep=",")。文件形如:a,b,c,d,name1,...

2018-11-25 15:06:44 881

原创 python 集合技巧

集合的内涵与数学里的集合定义一致集合的python存在形式一组无序排列的可哈希的值,可以用 in   not in 来判断元素与集合的关系,也可以用len()取出集合的长度,用for 迭代,但是集合本身是无序的;无法提供切片操作。set_1 = set("abndsfjla")set_1Out[3]: {'a', 'b', 'd', 'f', 'j', 'l', 'n', '...

2018-11-21 21:11:17 158

原创 python numpy 技巧

np.array 的属性&gt;&gt;&gt; import numpy as np&gt;&gt;&gt; array_1 = np.array([1,2,3])&gt;&gt;&gt; array_1array([1, 2, 3])&gt;&gt;&gt; array_1.ndim1&gt;&gt;&gt; array_1.size3&gt;&gt

2018-11-19 19:03:31 211

原创 python 字典技巧

一般的创建字典方法# 创建方法 {}dict1 = {} # 创建了一个字典dict1 = {"a":1, "b":2, "c":3} #手动初始化字典的内容#创建方法 dict() #class dict(**kwarg)#class dict(mapping, **kwarg)#class dict(iterable, **kwarg)&gt;&gt;&gt;dict(...

2018-11-18 22:39:37 266

空空如也

空空如也

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

TA关注的人

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