- 博客(32)
- 收藏
- 关注
原创 算法刷题-Day06
算法刷题-Day061. 无重复字符的最长子串 1. 无重复字符的最长子串 题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。 输入示例 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 思路讲解和代码实现 package com.why.day05; import java.util.ArrayList; import java.util.List; /** * @ClassName:day06 *
2021-11-03 18:39:28
240
原创 算法刷题-Day05
算法刷题-Day051. 链表的中间节点2. 删除链表倒数第n个结点 1. 链表的中间节点 题目描述 给定一个头结点为 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 输入示例 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个 ListNode 类型的对象 ans,这样: ans.val = 3, ans.next.val = 4,
2021-11-02 18:17:46
324
原创 算法刷题-Day04
算法刷题-Day041. 反转字符串2. 反转字符串中的单词 1. 反转字符串 题目描述 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 输入示例 输入:s = ["h","e","l","l","o"] 输出:["o","l","l","e","h"] 思路讲解和代码实现 package com.why.day04; /** * @ClassName:Reverse
2021-11-01 15:32:12
274
原创 算法刷题-Day03
算法刷题-Day031. 移动零2. 两数之和II - 输入有序数组 1. 移动零 题目描述 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 输入示例 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 思路讲解和代码实现 /** * 思路: * 1. 创建新数组arr * 2. 创建头指针start指向新数组头部 * 3. 创建尾指针end指向数组末尾
2021-10-31 13:37:09
245
原创 算法刷题-Day02
算法刷题-Day021. 有序数组的平方2. 旋转数组 1. 有序数组的平方 题目描述 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 输入示例 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100] 排序后,数组变为 [0,1,9,16,100] 思路讲解和代码实现 package com.why.day02; import java.util.Arr
2021-10-30 18:41:34
208
原创 算法刷题-Day01
算法刷题-Day011. 二分查找2. 第一个错误版本3. 搜素插入位置4. 使用到的判空类 1. 二分查找 题目描述 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 输入示例 输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解释: 9 出现在 nums 中并且下标为 4 思路讲解和代码实现 package com.why.day01;
2021-10-29 19:27:14
164
原创 Java-控制流程
目录控制流程2.8.1 if,switch分支语句2.8.2 循环语句while循环do while循环for循环增强for循环 控制流程 2.8.1 if,switch分支语句 if语法 if(判断条件){ 执行语句 }else{ 执行语句 } switch语法 switch(值){ case value1:语句 break; case value2:语句 break; default:语句 } 2.8.2 循环语句 while循环 当循环条件为真执行语句 while(循环条件){ /
2021-05-27 11:36:34
148
原创 Java-输入输出
目录输入输出2.7.1 读取键盘输入2.7.2 格式化输出 输入输出 2.7.1 读取键盘输入 构造一个Scanner对象 Scanner scanner = new Scanner(System.in); 使用scanner的类方法读取输入 String s = scanner.nextLine();//读取控制台一行输入,返回一个字符串 Scanner相关API int i = scanner.nextInt();//读取一个整型数据 scanner.nextDouble();//读
2021-05-27 11:24:18
145
原创 Java-字符串
目录字符串2.6.1 子串2.6.2 字符串拼接2.6.3 检测字符串是否相等2.6.4 空串和Null串2.6.5 字符串长度和字符串的字符2.6.6 String API2.6.7 构建字符串 字符串 从概念上讲, Java 字符串就是 Unicode 字符序列。 在标准 Java 类库中提供了 一个预定义类,叫做 String。每个用双引号括起来的字符串都是 String类的一个实 例: String str = "hello"; 2.6.1 子串 字串:是一个字符串的某些字段 String类的su
2021-05-27 11:23:22
138
原创 Java数据类型
目录数据类型整型浮点类型char类型Unicode 和 char类型boolean类型变量变量初始化常量运算符数学函数与常量数值类型之间的转换强制类型转换结合赋值和运算符自增和自减运算符关系运算符、逻辑运算符和boolean运算符括号和运算符级别位运算符枚举类型 数据类型 Java是强类型语言,这意味着必须为每一个变量声明一种类型,共有8中数据类型: 整型 表示没有小数部分的值,如1,2,3等 Java共有4种整型: 类型 存储需求 取值范围 int 4字节 -2 147 483 648 ~
2021-05-24 17:13:47
143
原创 Java注释
Java注释 注释可以帮助我们良好的阅读程序,一个良好的注释往往能使得编程达到事半功倍的效果。 注释不会出现在可执行程序中,只是一种对编写程序的说明 单行注释 //这是注释 多行注释 /** * 这是注释 */ ...
2021-05-24 17:10:53
113
原创 第一个Java程序-HelloWorld
第一个Java程序-HelloWorld public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } 逐行来分析这个程序 public称为访问修饰符,其用于控制程序其他部分对这段代码的访问级别 class表明Java程序中的全部内容都包含在类中。这里, 只 需要将类作为一个加载程序逻辑的容器,程序逻辑定义了应用程序的行为。
2021-05-24 17:07:17
176
原创 Java程序设计环境
目录Java程序设计环境**下载JDK****安装JDK,此处只介绍Windows下JDK的安装****集成开发环境** Java程序设计环境 Java设计环境需要JDK,无论是windows、Linux还是Unix都有对应的JDK版本 下载JDK 设计人员可至Oracle官网自行下载 官方网站 选择相应的JDK版本进行下载 安装JDK,此处只介绍Windows下JDK的安装 将下载的JDK安装包进行解压 复制其文件路径.注意:文件路径应无中文路径 右击此电脑,点击属性,进入控制面板的系统界面,点击高
2021-05-24 17:05:44
151
原创 Java概述
目录Java概述Java特性 Java概述 Java是一门广泛应用的编程语言,和所有编程语言一样,翻译人类的指令给计算机,让计算机执行复杂问题的工具。类似于日常生活中的英语,汉语,都是一种解释说明。计算机底层使用机器语言执行指令。 Java特性 Java 的设计者已经编写了颇有影响力的“ 白皮书”,用来解释设计的初衷以及完成的情 况,并且发布了一个简短的摘要, 这个摘要用下面 11 个关键术语进行组织: 1 ) 简单性 2 ) 面向对象 3 ) 分布式 4 ) 健壮性 5 ) 安全性
2021-05-24 17:03:30
147
原创 Spring Boot自定义starters
目录八、Spring Boot自定义starters1. 导入依赖2. 编写自动配置3. 模式4. 创建空项目5. 自定义Starter5.1 why-spring-boot-starter设置5.2 why-spring-boot-autoconfig中的设置5.3 将自动配置模块和启动器模块导入Maven仓库引用自定义的Starter 八、Spring Boot自定义starters **starters:**场景启动器 1. 导入依赖 <dependency> <groupI
2021-05-24 16:50:53
179
原创 Spring Boot与数据访问
目录六、Spring Boot与数据访问1. 简介2. Spring Boot整合JDBC3. Spring Boot整合Druid数据源4. Spring Boot整合MyBatis4.1 创建MyBatis基础环境4.2 使用MyBatis操纵数据库4.2.1 Mybatis注解版4.2.2 Mybatiss使用配置文件版Spring Boot整合JPA1. JPA简介2. 使用基本步骤 六、Spring Boot与数据访问 1. 简介 Spring Boot对于数据访问层,无论是SQL(关系型)还
2021-05-24 16:48:10
268
原创 Spring Boot与Docker
目录五、Spring Boot与Docker1. Docker简介2. Docker核心概念3. Docker环境准备3.1 安装linux虚拟机3.2 linux虚拟机安装Docker4. Docker常用操作命令4.1 镜像操作4.2 容器操作4.3 Docker 安装MySQL 五、Spring Boot与Docker 1. Docker简介 Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastru
2021-05-24 16:47:00
269
原创 Spring Boot与Web开发
目录四、Spring Boot与Web开发1. Spring Boot对静态资源的映射规则2. 模板引擎2.1 引入Thymeleaf2.2 Thymeleaf使用 & 语法3 . Spring MVC自动配置原理3.1 Spring MVC -Auto ConfigurationSpring MVC自动配置3.2 扩展SpringMVC3.3 全面接管Spring MVC4. 如何修改Spring Boot的默认配置5. RestfulCRUD程序实例5.1 默认访问到首页5.2 国际化5.3 登
2021-05-24 16:45:46
602
原创 Spring Boot集成日志
目录三、Spring Boot集成日志1. 日志框架2. SLf4j使用2.1 如何在系统中使用SLf4j2.2 遗留问题3. Spring Boot与日志关系4. 日志使用4.1 默认配置4.2 自定义日志配置5. 切换日志框架5.1 log4j日志框架的使用5.2 logback切换log4j示例 三、Spring Boot集成日志 1. 日志框架 是否还在使用System.out.println(“”)打印程序运行时状态及关键数据? 这样是否会显得不够专业? 此时日志框架应运而生,将所有的打印信息写
2021-05-24 16:43:30
295
原创 Spring Boot配置文件
二、Spring Boot配置文件 1. 配置文件 Spring Boot使用一个全局配置文件,配置文件名固定 application.properties application.yml 配置文件存放路径 配置文件是放在src/main/resources目录或者类路径/config下 配置文件作用 .yml是YAML语言的文件,以数据为中心,比json,xml等更适合做配置文件 参考语法规范 全局配置文件可以对一些默认配置值进行修改 YAML配置端口号: server: port: 80
2021-03-09 16:02:07
169
原创 Spring Boot - HelloWorld
4. Spring Boot - HelloWorld 功能 浏览器发送Hello请求,服务器接受请求并处理,响应HelloWorld字符串 步骤 创建maven工程 maven工程创建完成 导入SpringBoot相关依赖 <parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot&
2021-03-08 14:53:07
166
原创 Spring Boot入门
一、Spring Boot入门 1. Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。 官方网站:https://spring.io/projects/spring-boot 优点: 快速
2021-03-08 14:49:13
239
2
原创 数据结构 —— 哈希表
十一、哈希表(散列) 应用场景 有一个公司,当右新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工id时,要求查到该员工索引信息 要求:不适用数据库,尽量节省内存,速度越快越好 基本介绍 也叫散列表,是根据关键码值二直接进行访问的数据结构。也就是说,它通过把关键码值映射到一个表中一个位置来访问记录,以加快查找速度。这个映射函数叫散列函数,存放记录的数组叫做散列表 实现缓存层 定义哈希表可以自己实现缓存层: 数组+链表 数组+二叉树 11.1 使用哈希表管理雇员信息 需
2020-12-31 15:21:28
230
原创 数据结构 —— 查找算法
十、查找算法 常用的查找算法: 顺序(线性)查找 二分查找/折半查找 插值查找 斐波那契查找 10.1 线性查找 一个数列可有序,可无序 代码实现 /** * 线性查找 * 这里是找到一个即返回 * @param arr 查找的数据数列 * @param val 需要查找的值 * @return */ public static int seqSearch(int[] arr,int val){ //线性查找是逐一比对,发现相同值,返回下标 for (int i = 0;
2020-12-31 15:20:18
352
原创 数据结构 —— 八大排序算法
九、排序算法(Sort Algorithm) 9.1 排序算法介绍和分类 将一组数据,依指定顺序进行排列 排序的分类 内部排序 指将需要处理的所有数据都加载到内部存储器中进行排序 外部排序 数据量过大,无法全部加载到内存中,需借助外部存储进行排序 常见的排序算法 9.2 冒泡排序(Bubble Sort) 基本思想 通过对待排序序列从前向后(从下表较小的元素 开始),依次比较相邻元素的值,若发现逆序,交换相邻元素的值 基本代码 public static void bubbleSorting(
2020-12-31 15:18:37
353
原创 数据结构 —— 算法复杂度
八、算法复杂度 8.1 算法时间复杂度 度量一个程序执行时间的两种方法 事后统计的方法 两个问题: 相对设计的算法的运行行能进行评测,需要实际运行程序 所得时间的通缉令依赖于计算机的硬件、软件等环境因素 事前估计法 通过分析某个算法的时间复杂度来判断那个算法更优 时间频度 一个算法花费的时间与算法中语句的执行此时成正比,语句执行次数叫时间频度(语句频度),记为T(n) 对于时间频度,可以忽略常数项,低次项和系数 时间复杂度 算法中的基本操作语句的重复执行次数时问题规模n的某个函数用T(n)表
2020-12-31 15:17:30
247
原创 数据结构 —— 递归算法
七、递归(Recursion)回溯算法 **概念:**方法自己调用自己 有助于编程者解决复杂问题 递归调用机制 Java有三个分区,栈,堆,方法区 当程序执行到一个方法是开辟一个独立空间,在栈之中 每隔空间的数据(局部变量)是独立的 打印问题 public static void test(int n){ if (n>0){ test(n-1); } System.out.println("n = "+n); } 阶乘问题 public static
2020-12-31 15:16:41
456
1
原创 数据结构 —— 栈
六、栈(Stack) 6.1 实际需求 计算722-5+1-5+3-3 对于计算机而言,其接收到的就是一个字符串 计算机底层如何计算获得结果? 6.2 栈的介绍 栈是一个先入后出的有序列表 栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶,另一端为固定的一端,称为栈底。 最先放入的元素在栈底,最后放入的元素在栈顶 删除元素从栈顶开始删除 6.3 栈的应用场景 子程序调用:在跳往子程序前,会将下个指令的地址存在堆栈中,直到子程序执行完
2020-12-31 15:15:44
308
原创 数据结构 —— 链表
五、链表(Linked-List) 5.1 单链表 链表(linked list)有序列表,但是存储不连续 特点: 以节点形式存储 每个节点包括data域,next域:指向下一节点 链表的各个节点不一定时连续存放的 链表分带头节点的链表和无头节点的链表,根据实际需求确定 5.1.1 应用实例 使用带head节点的单向链表实现——水浒英雄排行榜管理 完成对英雄人物的增删改查操作 添加时两种方法,直接添加至链表尾部,或插入至指定位置 分析: 创建英雄节点(class,存放信息),创建头节点时,不存放
2020-12-31 15:13:27
166
原创 数据结构 —— 队列
队列(Queue) 队列的应用场景 银行排队案例,买票案例 队列概述 队列是一个有序列表,可以用数组或是链表来表现 遵循先进先出的元组 队列的实现方式 数组形式 代码实现 package com.why.data_structure.queue; import java.awt.*; import java.util.Arrays; import java.util.Scanner; /** * @Description TODO 用数组模拟队列 * @Author why * @Date
2020-12-31 15:12:11
108
原创 数据结构 —— 稀疏数组
三、稀疏数组 稀疏数组的应用场景 问题:五子棋程序,存盘退出和续上盘的功能 定义:二维数组很多值都是默认值0,或者大多数值都相同,这些数据没有意义,该数组可用稀疏数组保存。 处理方法: 记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素 的行列及值记录在一个小规模的数组中,从而缩小程序的规模 举例 用二维数组记录行列值 稀疏数组思路分析 二维数组转稀疏数组 遍历原始二维数组,得到有效数据的个数sum 根据sum创建稀疏数组aparseArr int【sum+1】 将二维数组的有效数据存入到
2020-12-31 15:10:36
142
原创 数据结构概述
数据结构概述 数据结构和算法的关系 数据结构时一门研究组织数据方式的学科 程序 = 数据结构 + 算法 数据结构 线性结构: 最常用的数据结构,数据元素之间存在一对一的线性关系 两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中存储的元素是连续的 链式存储的线性表叫链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息 线性结构常见的有:数组、队列、链表和栈 非线性结构: 包括:二维数组,多维数组,广义表,树结构,图结构 ...
2020-12-31 15:08:04
99
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅