自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基本数据结构 —— 链式表的认识及不同链表的代码实现

PS:本文将介绍什么是链表,以及单链表、双向链表、循环链表的认识和代码实现什么是链表? 链表是一种常见的数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必按顺序存储,链表在插入的时候可以达到O⑴的复杂度,比顺序表快很多,但是查询一个节点或访问特定下标的节点则需要O(n)的时间,而顺序表相应的时间复杂度为 O(1) ...

2019-09-20 18:22:49 791

原创 数据结构 —— 栈和队列的认识及代码实现及面试题

PS:本文将介绍什么是栈和队列以及,顺序栈、队列(顺序队列、循环队列)、链式栈和链式队列的代码实现,以及栈和队列的面试题:两个栈实现一个队列、两个队列实现一个栈栈什么是栈?①栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。②栈就是一个桶,后放进去的先拿出来,它下面本来有的东西要等它出来之后才...

2019-09-05 20:22:35 480

原创 【Java】静态代码块、构造代码块、构造函数、普通代码块

类的初始化顺序最近做面试题时,发现对于类的初始化顺序考察还是很频繁的,例如下面这道面试题:class A{ public int i = method(); public static int j = method2(); public int k = 0; public A(){ System.out.println(1); }...

2019-08-20 00:50:44 273

原创 解决win10一开机内存(8G)就占用70%多,查看任务管理器并没有占用内存很高的进程的问题

问题描述: 这几天电脑运行大内存的应用,会出现卡死现象,今早开机时发现内存占用高达70%(未运行任何程序),重启后内存占用还是很高。本人使用idea编程工具,运行代码时内存占用90%多,严重影响了日常使用。首先想到的是查看任务管理器里的进程,结果并没有内存占用很大的进程...除了自己运行的idea,排在第二的内存占用进程是 服务主机 super fetch问题解决:方法一...

2019-08-11 15:03:06 136300 6

原创 MySQL数据库(03)--- 存储引擎(常见的3种存储引擎)

数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据,不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。简而言之,存储引擎就是指表的类型(即数据的存储类型),业务直接决定了使用的存储引擎。一个数据库管理业务支持多种存储引擎,MySQL的核心就是插件式存储引擎存储引擎的选择:...

2019-08-10 16:52:23 462

原创 MySQL数据库的操作(01)--- MySQL的安装以及mysql与idea的连接

目录一、Windows下安装MySQL教程1.安装包的下载2.安装教程二、MySQL与idea建立连接一、Windows下安装MySQL教程注:我们是以8.0版本安装的MySQL,在配置相关问题上与其他版本可能会有所不同1.安装包的下载下载地址:https://dev.mysql.com/downloads/mysql/点击下载之后,可以选择注册Ora...

2019-08-07 13:54:47 2878 1

原创 MySQL数据库的操作(02)---数据库、表的基本语法(操作)

目录1.操作数据库2.表的操作语句2.1创建表2.2查看表结构2.3修改表2.4删除表1.操作数据库1.1创建数据库:create database 数据库名;create database 数据库名 character set 字符集;例如:#创建数据库 数据库中数据的编码采用的是安装数据库时指定的默认编码 utf8 CREATE ...

2019-08-07 10:41:33 865

原创 动态规划面试题(最大字段和/三角数组最大和/LIS最长非降子序列/LCS最长(连续/非连续)公共子序列)

1.最大字段和描述:给定n个整数(可能为负数)组成的序列 a[1],a[2],a[3]... ,a[n],求该序列如a[i]+a[i+1]+... +a[j]的子段和的最大值。 当所给的整数均为负数时定义子段和为0,如果序列中全部是负数则最大子断和为0,依此定义,所求的最优值为Max{0,a[i]+a[i+ 1] +....+a...

2019-07-29 00:41:53 684

原创 算法 --- 动态规划(硬币问题)

算法描述通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。基本思想若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。 通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量: 一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接...

2019-07-22 12:27:33 10539

原创 回溯算法 --- 子集树(打印一个数组的所有子集 0/1背包 装载问题)

子集树就是代表了一类问题的解空间,当所给问题是从n个元素的集合S中找出S满足某种性质的子集时,相应的解空间称为子集树。例如:n个物品的0-1背包问题/装在问题所对应的解空间是一棵子集树,这类子集树通常有2^n个叶结点,时间复杂度为O(2^n)子集树的思想为深度优先算法,从根节点出发,不断访问符合条件的子节点,(如果不符合则进行剪枝并访问该节点的兄弟节点),当访问到叶节点的时候,进行输出或...

2019-07-18 20:04:08 1023

原创 算法 --- 回溯算法

回溯法回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试1、有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法2、回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题3、回溯法在问题的解空间树...

2019-07-18 17:45:43 820

原创 高级数据结构 --- 红黑树的删除

将将红黑树内的某一个节点删除,需要执行的操作依次是:首先,将红黑树当作一颗二叉查找树,将该节点从二叉查找树中删除;然后,通过"旋转和重新着色"等一系列来修正该树,使之重新成为一棵红黑树。红黑树删除: 最多旋转三次若删除为红色节点,直接删除(因为红黑树的性质是不能出现两个连续的红色节点,因此我们不需要判断待删节点的子节点以及父节点是否为红色节点,而且删除的红色节点不会打破每个子树上的...

2019-07-18 01:29:18 819

原创 【Java】高级数据结构 --- 红黑树(上)

红黑树的介绍红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点的值,大于等于左孩子的值,小于等于右孩子的值。除了具备该特性之外,红黑树还包括许多额外的信息。红黑树顾名思义就是给节点加入了颜色,每个节点上都有存储位表示节点的颜色,颜色是红(Red)或黑(Black)。 特点1...

2019-07-15 01:23:18 184

原创 【Java】 集合 --- 从键盘获取一串字符串,去除重复的字符后输出

这里我们给出两道简单的集合应用题:1.从键盘获取一串字符串,去除重复的字符后输出2.产生10个0~20的随机数,要求不能重复分析:这两道题的关键就是,在集合中不能存取相同的元素,所以我们可以直接创建set集合、在存储元素时不能出现重复元素;或者创建list集合,最后通过遍历集合,发现有相同元素直接调用remove()方法删除即可。1.从键盘获取一串字符串,去除重复的字符后输出...

2019-07-13 16:47:20 9082 2

原创 【Java】面相对象 --- 多态

所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代...

2019-07-13 00:58:21 181

原创 【Java】集合 --- 简单斗地主发牌、看牌、排序操作

步骤:1.准备牌:创建ArrayList集合对象将54张扑克放入集合中; 2.发牌:用集合工具类的shuffle方法,将ArrayList打乱,直接调用就行; 3.看牌:将List集合的元素放入四份,三个玩家,一份底牌代码实现:import java.util.ArrayList;import java.util.Collections;...

2019-07-12 00:24:07 630 1

原创 【Java】面向对象 --- 重写(Override)与重载(Overload)

重写(Override)(方法覆盖)重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Excep...

2019-07-11 00:46:28 250

原创 【Java】面向对象 --- 继承

目录继承的概念(其本质是:代码的复用)继承问题的引出继承类型继承的特性继承的限制继承关键字extends关键字implements关键字super 与 this 关键字final关键字构造器继承的概念(其本质是:代码的复用)继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。...

2019-07-09 10:23:45 129

原创 【Java】高级数据结构算法 -- AVL树

目录 1.概念 AVL树的定义: AVL树性质: AVL树效率: 2.AVL树基本类型定义代码 3.插入 AVL四种旋转操作 插入代码实现 4.删除 5.判断一棵二叉搜索树树是否是AVL树 6.测试代码 7.1~10十个数的AVL数的插入图解...

2019-07-07 23:26:50 371

原创 【BST树】常见笔试题

目录(1)BST树的镜像反转(2)寻找BST树指定区间的元素结果集(3)判断一颗二叉树是不是一颗BST树(4)返回两个节点的最近公共祖先节点(5)获取中序遍历倒数第k个节点的值(6)判断childTree是否是当前BST树的一颗子树 (7)根据参数传入的前序遍历结果pre数组和中序遍历结果in数组,重建二叉树(1)BST树的镜像反转/** ...

2019-07-06 00:23:58 253 1

原创 【Java】高级数据结构算法 -- BST树

目录基本概念定义前序、中序、后序遍历前驱节点、后继节点(主要用于删除有两个孩子的节点)代码实现(BST树的基本接口实现)BST树的创建插入(非递归、递归)删除(递归、非递归)查询(递归、非递归)BST树的前序、中序、后序、层序遍历的递归实现二叉搜索树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性...

2019-07-05 01:14:02 264

原创 【java】集合:计算一个字符串里每个字符出现的次数

基本思路:1.从键盘获取一个字符串;2.创建一个集合Map<字符,次数>,键来存我们的字符,值来表示次数;3.遍历字符串中的每个字符;4.判断Map集合有没有我们的这个字符: 有,说明集合里面有或者我们之前已经出现过了,直接对值进行加1,++操作; 没有,首先把字符存进去,然后直接次数加1;(之前没有:0,1)count++/1.代码实现:impo...

2019-07-04 23:24:03 412

原创 【Java】简单银行案例实现

功能实现此案例可以实现简单的,银行卡注册,登录,以及登陆后,实现存钱、取钱(可跨银行)、以及存取操作完成后的查询余额功能。1.定义一个Bank类,需要定义银行卡类型,容量; public class Bank { private BankCard[]cards; private int size; //给定银行容量 private final i...

2019-07-02 11:30:20 2767

原创 【Java】二分查找(非递归 递归)

二分查找又叫折半查找,针对的是有序表(升序或者降序的数组) 输入一个值进行查找,在查找过程中,首先与序列中间的元素进行比较,如果大于这个元素,就在当前序列的后半部分继续查找,如果小于这个元素,就在当前序列的前半部分继续查找,直到找到相同的元素,或者所查找的序列范围为空为止。实现原理:(1)首先确定整个查找区间的中间位置mid=(low+high)/2;(2)用待查关...

2019-06-26 00:25:37 380

原创 【Java】七大排序(冒泡、选择、插入、快排、归并、堆排、希尔排序)

1.冒泡排序时间复杂度:O(n^2),空间复杂度:O(1) 很稳定代码优化:加入swap判断语句,public class bubbleSort { private static void bubbleSort(int [] arr){ boolean swap = false;//定义swap判断是否近入到了循环,本来就是从小到大顺序,则不进入 ...

2019-06-23 00:16:26 522

原创 【Java】数组实现字符串的替换(增删)

s1

2019-06-15 18:17:53 5463

空空如也

空空如也

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

TA关注的人

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