自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 必须掌握,二叉树的前中后序遍历(迭代+递归)详细代码

对于二叉树的三种遍历方式,无论是简单的递归写法,还是迭代写法,都是在面试中容易被考到的,所以这篇文章就把这个常考知识点给解释清楚。 1.二叉树的前序遍历(LeetCode 144题) 前序遍历的关键在于:先遍历根节点,再遍历左子树,再遍历右子树。 即:根→左→右 (1) 递归写法 对于递归写法大家肯定都是非常清楚的,因为它的代码很简单,也比较容易理解,如下: class Solution { List<Integer> res = new ArrayList<>();

2021-01-17 15:19:25 1168

原创 牛客巅峰赛S2第四场题解(青铜白银组)

牛客巅峰赛S2第四场题解(青铜白银组) 欢迎关注我的公众号ACJavaBear,一起学Java 1.牛牛掷硬币 题目描述 牛牛最近很喜欢掷硬币,由于他今天很无聊,所以他在家掷了n次硬币,如果这n次硬币全部朝上或者全部朝下牛牛就很开心,请问牛牛开心的概率是多少。(每次掷硬币朝上的概率与朝下的概率相同) 样例1 输入 1 返回 "1.00" 说明 概率为1,四舍五入保留两位小数的字符串为"1.00" 样例2 输入 5 返回 "0.06" 说明 概率为0.0625,四舍五入保留两位小数的字符串为"0

2020-11-29 08:39:37 255

原创 牛客巅峰赛S2第三场题解(青铜白银组)

牛客巅峰赛S2第三场题解(青铜白银组) 更多内容欢迎关注我的公众号ACJavaBear,一起学习Java。 1.牛牛打怪 题目描述 牛牛在各个平台被各种传奇游戏的广告轰炸,所以他决定去玩一玩这类的游戏。这类游戏挂机就可以升级,所以牛牛每天都能变强。在第i天里,牛牛能杀死防御力小于等于i的怪物。但由于牛牛还要刷题,所以牛牛每天最多杀一只怪物。这个游戏共有n只怪物,每只怪物的防御力为DEF[i],牛牛想知道最少要到第几天才能把这n只怪物都杀死。 样例1 输入 2,[7,3] 返回 7 说明 牛牛可以在第

2020-11-26 00:09:00 301

原创 Trie树Java模板

TrieTrieTrie 树 欢迎关注我的公众号ACJavaBear了解更多精彩内容 1.什么是 TrieTrieTrie 树 TrieTrieTrie 树,又叫前缀树,也叫字典树,用于统计和保存大量的字符串。 它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较。 简而言之,TrieTrieTrie 树是用来存储和查找字符串的一个集合。 2. TrieTrieTrie 树的结构 如图(图片来自于百度百科) (1) 根节点 root (2) 子节点 TrieNode 该节点是

2020-11-23 23:08:53 234

原创 牛客巅峰赛S2第2场题解(青铜白银组)

牛客巅峰赛青铜白银组S2第2场 第一题 题意: 牛牛是个非常热心的人,所以他有很多的朋友。这一天牛牛跟他的n个朋友一起出去玩,在出门前牛牛的妈妈给了牛牛k块糖果,牛牛决定把这些糖果的一部分分享给他的朋友们。由于牛牛非常热心,所以他希望他的每一个朋友分到的糖果数量都比牛牛要多(严格意义的多,不能相等)。牛牛想知道他最多能吃到多少糖果? 示例1 输入: 2,10 输出: 2 说明: 牛牛可以分给他的两个朋友各4个糖果,这样他能吃到2个糖果,这样能保证他的每个朋友的糖果数都比他多,不存在牛牛能吃到3个或者以上

2020-11-20 23:49:05 306

原创 Set集合分析

Set存储无序,不可重复的元素。 无序性:存储元素的顺序并不是按数组的索引顺序添加,而是根据哈希值来决定。 不可重复性:用equals()判断,相同的元素只能添加一个 Set没有自己定义API 一、HashSet HashSet底层是 数组 + 链表,数组的初始大小为16。HashSet线程不安全。 向HashSet中添加元素a的过程: (1) 首先调用元素a所在类的hashCode()方法,计算元素a 的哈希值 (2) 通过某种算法,利用哈希值计算出在HashSet底层数组中的存放位置(即索引位置) (

2020-11-16 23:03:08 704

原创 开源项目学习指南,血与泪的教训(新手向)

1.开源项目在哪里 (1) GitHubGitHubGitHub (2) 码云 2.观察一个开源项目 以码云上的 RuoYiRuoYiRuoYi 项目为例。 (1) 阅读 README.mdREADME.mdREADME.md 文件,这里一般是对项目的一些介绍,比如用到了哪些技术栈,对应的版本,有哪些功能,线上演示网址等等。 (2) 简单浏览项目的代码封包结构 ,得到基本的信息。比如这是一个 MavenMavenMaven 项目还是一个 GradleGradleGradle 项目,项目有没有提供 .sql.

2020-11-15 23:06:13 249

原创 Java中的值传递

1.引子:变量的赋值 对于基本数据类型 int m = 1; int n = 2; System.out.println("m = " + m); System.out.println("n = " + n); n = m; System.out.println("n = " + n); 输出 m = 1 n = 2 n = 1 赋的值就是变量值。 对于引用类型 class User{ int a; } User u1 = new User(); u1.a = 1; User u2 = u1;

2020-11-14 23:38:38 180

原创 SpringBoot 配置文件与自动装配原理

1.关于 SpringBootSpringBootSpringBoot 的配置文件 1.0 配置文件的类型 SpringBootSpringBootSpringBoot 支持以下两类配置文件。 后缀为 .properties.properties.properties 的文件 后缀为 .yml.yml.yml 的文件 1.1 配置文件的位置 在创建一个 SpringBootSpringBootSpringBoot 工程时,默认在 resourcesresourcesresources 目录下有一

2020-11-13 22:55:48 727

原创 并查集Java代码模板

并查集 1.什么是并查集 并查集是一种树型的数据结构,用于处理一些不交集的合并及查询问题。它可以支持两种操作 (1) 将两个不相交的集合合并 (2) 判断两个元素是否在一个集合中 两种操作的时间复杂度近乎O(1)O(1)O(1)。 2.并查集的存储结构 并查集是一种树形结构,换句话说,就是每个集合用一棵树表示。这个集合的编号就是这棵树的树根。我们用一个数组p来存储每个节点的父节点的编号,即 p[x]p[x]p[x] 表示编号为 xxx 的结点的父节点的编号为 p[x]p[x]p[x] 。 初始化:把每个点所

2020-11-12 23:03:15 699

原创 前缀和与差分Java代码模板

1.什么是前缀和 这里只介绍一维前缀和与二维前缀和 即假设有一数列{an}\{ a_n\}{an​} ,那么前缀和就可以理解为 a1+a2+a3+...+aia_1 + a_2 + a_3 + ... + a_ia1​+a2​+a3​+...+ai​。而前缀和数组即为存储以a1a_1a1​为起点,aia_iai​为终点的前缀和的数组。 举个例子: 若 b1=a1b_1 = a_1b1​=a1​ b2=a1+a2b_2 = a_1 + a_2b2​=a1​+a2​ b3=a1+a2+a3b_3 = a

2020-11-07 17:57:11 681

原创 快速排序与归并排序(Java模板)

一、快速排序 1.快排思想 (1) 确定分界点,把数组分成两部分。 常用的分界点有:数组第一个数,数组最后一个数,数组中间那个数 一般我会选用数组中间那个数作为分界点,这样后面的写法也固定了,不容易遇到边界问题。 (2) 根据分界点调整数组,使得分界点左边的数都小于等于分界点,分界点右边的数都大于等于分界点 方法:利用双指针的移动,左指针在左边大于分界点的数停下,右指针在右边小于分界点的数停下,交换这两个数。 (3) 递归处理左右两边。 (4) 时间复杂度O(nlogn)O(nlogn)O(nlogn)。

2020-11-07 17:54:06 459 1

空空如也

空空如也

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

TA关注的人

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