自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 IDEA导入jar包

在IDEA中导入jar包方式方式一进入File –> Project Structure选择Modues -> Dependencies -> +选择导入方式,可选择第一个选择要导入的包点击Apply -> OK

2021-09-15 19:51:38 377 1

原创 二叉树操作篇 -- 判断是否为二叉搜索树的后续遍历序列

题目描述牛客网:JZ23 二叉搜索树的后续遍历序列输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜索树)示例输入:[4,8,6,12,16,14,10]输出:true下图为后序遍历的一种二叉搜索树:题目解析方法一:递归二叉搜索树的定义为根节点大于左子树节点,小于右子树节点,中序搜索的结果为非递减序列。题目给出后续遍历序列,后续遍历顺序为左 - 右 - 根

2021-09-08 12:55:33 299

原创 二叉树操作篇 -- 树的子结构

题目描述牛客网:JZ17 树的子结构输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)示例输入:{8,8,#,9,#,2,#,5},{8,9,#,2}输出:true题目解析方法一:递归B如果是A的子结构,则根节点和相同且B的左右子树也是S的左右子树的子结构。可以使用递归思想求解问题。public boolean HasSubtree(TreeNode root1,TreeNode root2) { //若root2为空,则空树不是任意树的子结

2021-09-06 22:37:41 168

原创 数组排序篇 -- 数组中的逆序对

题目描述牛客网:JZ35 数组中的逆序对在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007示例输入:[1,2,3,4,5,6,7,0]输出:7题目解析方法一:暴力破解根据题意,前面数字大于后面数字即为一个逆序对,两层遍历数组可以得到所有逆序对。注意:当数据量较大时,int数据不足以表示所有结果,因此计算时使用long型整数。publi

2021-09-03 11:08:31 509

原创 解题篇 -- 丑数

题目描述牛客网:JZ33 丑数把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。示例输入:7输出:8丑数为:[1,2,3,4,5,6,8,9,…],第7个数字是8题目解析根据题意,丑数可表示为2x3y5z,每个丑数的2、3、5倍数也都是丑数。按从小到大的顺序找到第N个丑数,可以从最小的丑数1开始,推出后续所有丑数。提醒:通过计算可以发现,丑数前6个数字

2021-08-30 12:38:06 333

原创 数组排序篇 -- 把数组排成最小的数

文章目录题目描述题目解析思路一:暴力求解思路二:排序最小堆列表或数组题目描述牛客网:JZ32 把数组排成最小的数输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例:输入:[3,32,321]输出:“321323”题目解析题目要求将数字拼接成最小的数字,即数字小的放到前面。在示例中前面位数的数字相同时,1最小,应该在最前面。设计到拼接问题,整型数据不方便排序,可以转换成字符串进行拼接排序。思路一:暴力求解将所有可能性排列出来,找出其中最小

2021-08-27 15:09:24 657

原创 解题篇 -- 和为S的连续正序序列

文章目录题目描述题目解析方法一:左右边界枚举方法二:滑动窗口方法三:前缀和题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!说明: 输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始

2021-08-25 11:33:50 285

原创 排序篇 -- 牛牛的字符串

题目描述牛客网:NC629 牛牛的字符串有一个长度为N的由小写字母组成的字符串S,还有一个整数K。在每一步中,可以选择一个位置 i 并在 i 和 i + K 处交换字符(i + K < N)并且Si < Si+k,即交换之后,新形成的字符串应字典序大于旧字符串。为了尽可能交换尽量多的步数。最多可以交换多少步呢。解题思路根据交换规则,在位置i 和 i + K 处交换字符,则对于位置在(i + n*k)的一组字符来说,可以对其进行排序,使得排序结果满足字典序大于旧字符组。对此进行推理,字

2021-08-19 10:49:53 620

原创 堆操作篇 -- 寻找第K大

文章目录题目描述题目解析方法一:sort()排序方法二:快排思想方法三:堆题目描述牛客网:NC88 寻找第K大有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a ,同时给定它的大小n和要找的K(1<= K<=n) ,请返回第K大的数(包括重复的元素,不用去重),保证答案存在。要求时间复杂度 O(n)题目解析方法一:sort()排序把数组元素排序,可直接得到第K大的值.public int findKth(int[] a, int n, int K)

2021-08-17 15:46:52 1131

原创 哈希操作篇 -- 字符串出现次数的TopK问题

题目描述牛客网:NC97 字符串出现次数的TopK问题给定一个字符串数组,再给定整数k,请返回出现次数前k名的字符串和对应的次数。返回的答案应该按字符串出现频率由高到低排序。如果不同的字符串有相同出现频率,按字典序排序。对于两个字符串,大小关系取决于两个字符串从左到右第一个不同字符的 ASCII 值的大小关系。比如"ah1x"小于"ahb",“231”<”32“字符仅包含数字和字母要求如果字符串数组长度为N,时间复杂度请达到O(NlogK)题目解析根据字符串出现的次数排序,首先需

2021-08-16 14:19:34 635

原创 哈希操作篇 -- 数组中的和

文章目录两数之和题目描述题目解析方法一:暴力枚举方法二:哈希表扩展:最长子数组之和为给定值题目描述题目解析两数之和牛客网:NC61 两数之和题目描述给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的假设给出的数组中只存在唯一解示例:输入: [3,2,4],6输出:[2,3]说明:2+4=6 ,2的下标为2 , 4的下标为3 ,下标

2021-08-16 10:50:59 537

原创 IDEA 2020 创建Maven项目

安装Maven首先要安装配置好Maven环境,安装过程可参考文章:Win10安装Maven创建Maven项目参考文章:IDEA 2020 创建Maven项目创建项目Project。IDEA里的Project相当于一个工作区间,可存放很多实际的项目。创建Module。Project右键 -->New -->ModuleIDEA里的一个Module是实际上的一个项目选择左侧Maven菜单,选中Create from archetype,选择 maven-archetype-w

2021-08-15 15:45:41 1720

原创 Win10下Maven的安装与下载

Maven简介Apache Maven Project是一个跨平台的项目管理工具,自身是纯java开发的,可以使用maven对java项目进行构建、依赖管理。功能:创建项目:基于archetype可以创建多种类型的java项目对jar包进行统一管理,避免jar文件的重复拷贝和版本冲突团队开发中,方便多模块(module)项目中个模块之间的快速集成Maven安装与配置1. 下载安装包可到官网下载:官网地址根据需求选择安装版本。最新的是3.8.2,Win10下可以选择bin.zip解压

2021-08-14 22:17:48 340

原创 Tomcat安装与配置

文章目录Tomcat简介Tomcat安装1. 下载2. 安装3. 配置环境变量Tomcat测试Tomcat简介Apache Tomcat是由Apache Software Foundation(ASF)开发的一个开源免费的Java WEB应用服务器。Tomcat用Java语言编写,运行在Java虚拟机上,所以需要先安装JDK,提供运行环境Tomcat安装1. 下载分解压版和安装版两种。解压版下载压缩包解压后直接使用。本文采用安装版,下载Tomcat9.0.50版本安装包:官网地址2. 安装

2021-08-14 21:37:53 287

原创 栈操作篇 --牛牛的魔法值

文章目录题目描述题目解析JAVA代码题目描述牛客网:NC574 牛牛的魔法值牛牛最近在和牛毕学习魔法,牛毕说每一个魔法都对应一个n维空间,用(a0,a1,a2,…an-1)表示.成为一个伟大的牛魔法师的第一件事情是计算每个魔法的魔法值,然后挑选适合自己的魔法进行学习。牛毕对牛牛说计算魔法值很简单就是对于每一个子连续维度空间计算出它的子维度魔法值,然后所有子维度魔法值中的最大值就能表示该魔法的最大威力,故其为该魔法的魔法值。一个子连续维度空间是指下标连续,例如一个n维空间(a0,a1,a2,a3)就

2021-08-14 15:32:34 229 2

原创 队列操作篇 -- 旅行问题

题目描述牛客网:NC522旅行Ⅰ牛妹出去旅行啦,她准备去N个城市旅行,去每个城市的开销是Ai 元。但是牛妹有强迫症,她想在去y城市之前先旅游x城市,于是牛妹列出了这些限制条件list。并且牛妹很节约,她只有V元,她每次会选择当前能去的花费最小的城市,如有多个花费一样的则首先去编号小的城市,她想知道她最多能到多少个城市去旅游。示例输入:3,10,[3,7,8],[(1,2)]返回值:2参数说明:3:城市总数,编号从1 -> N10:总金额[3,7,8]:城市的开销[(1,2)]:代

2021-08-13 18:02:48 210

原创 数组操作篇 -- 回形针遍历数组

题目描述给定矩阵,从左上角开始以回形针方向遍历数组,返回遍历结果。如下图所示题目解析返回的结果可以用数组表示,因为数组的大小是已知的,也可以用列表来存储遍历结果。本文为了方便使用列表作为返回值。遍历时需要考虑遍历方向和是否遍历结束。遍历方向的顺序是一致的,可以依次对每个方向进行遍历判断遍历终止条件。由于遍历从矩阵最外圈开始不断向里,可以通过边界线来判断是否结束遍历。public List<Integer> beans(int[][] matrix){ List&l

2021-08-12 15:29:20 523

原创 数组操作篇 -- 顺时针旋转矩阵

文章目录题目描述题目解析方法一:创建新的矩阵方法二:原地旋转题目描述有一个NxN整数矩阵,请编写一个算法,输入NxN矩阵和就很的结束N,将矩阵顺时针旋转90度后返回。示例输入:[[1,2,3],[4,5,6],[7,8,9]],3输出:[[7,4,1],[8,5,2],[9,6,3]]如下图所示:题目解析方法一:创建新的矩阵创建新的矩阵ans[n][n]用于存储旋转后的值,遍历原数组即可根据旋转规律可以看出:ans[i][j] = mat[n - j - 1][i];publi

2021-08-12 15:01:42 1072

原创 二叉树操作篇 -- 二叉树的深度

二叉树的深度二叉树的根节点为第一层,根节点的子节点为第二层,以此类推,最大层数即为二叉树的深度如下图所示二叉树深度为3求二叉树深度求二叉树的深度可用两种方法:深度优先遍历和广度优先遍历1. 广度优先遍历(BFS)使用BFS对二叉树进行层次遍历,每遍历一层树的深度加1,遍历完整个二叉树时即可得到二叉树的深度。public int TreeDepth(TreeNode root) { if(root == null){ return 0; } in

2021-08-10 11:04:30 877

原创 刷题小笔记 -- 剪绳子

文章目录题目描述求解1. 暴力破解2. 动态规划3. 数学法题目描述牛客网:JZ67给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],...,k[m]。请问k[1] * k[2] *...* k[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入:整数n,2 <= n <= 60输出:最大乘积求解1. 暴力破解已知

2021-08-09 13:48:34 140

原创 刷题小笔记 -- 求拜访路径方案数

题目描述现在有一个城市销售经理,需要从公司出发,去拜访市内的商家,已知他的位置以及商家的位置,但是由于城市道路交通的原因,他只能在左右中选择一个方向,在上下中选择一个方向,现在问他有多少种方案到达商家地址。给定一个地图map及它的长宽n和m,其中1代表经理位置,2代表商家位置,-1代表不能经过的地区,0代表可以经过的地区,请返回方案数,保证一定存在合法路径。保证矩阵的长宽都小于等于10解析首先需要找到商家与经理的位置,不一定在矩阵顶点。求路径方案数有多种算法,如动态规划、BFS等。方法一:BFS

2021-08-08 22:00:19 358

原创 刷题小笔记 -- 数学篇

二进制数求给定整数的32位二进制表示中1的个数,负数用补码表示牛客网JZ11 二进制中1的个数小知识:二进制数最右边第一个1例如:val : 1101000,则val - 1 : 1100111那么有 ans = val & (val - 1) = 1100000 ,找到了最右边1的位置则题解代码可以为:public int NumberOf1(int n) { int ans = 0; while(n != 0){ ans++; n

2021-08-08 18:58:20 94

原创 链表操作篇 -- 链表节点每k的一组翻转

题目描述将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。要求空间复杂度 O(1)例如:给定的链表是 1 -> 2 -> 3 -> 4 -> 5对于 k = 2, 你应该返回 2 -> 1 -> 4 -> 3 -> 5对于 k = 3, 你应该返回 3 -> 2 -> 1 -> 4 -> 5解题思路使用头插法和双

2021-08-03 17:07:34 237

原创 二叉树操作篇 -- 重建二叉树

题目描述根据给定的前序遍历和中序遍历,重建二叉树并返回头结点牛客网题目地址:NC12 重建二叉树**输入:**以数组形式给定前序遍历和中序遍历,如前序遍历序列[1,2,4,7,3,5,6,8]、中序遍历序列[4,7,2,1,5,3,8,6]解题思路重建二叉树通常采用递归法根据前序遍历和中序遍历的特点,进行以下操作:(以前序遍历序列[1,2,4,7,3,5,6,8]、中序遍历序列[4,7,2,1,5,3,8,6]为例)先确定根节点。前序遍历序列首元素为二叉树的根。1为二叉树的根节点确定左右子

2021-07-30 14:29:36 235

原创 大数加法运算

大数相加编程语言的数据类型所能表示的数据类型是有范围的,对于较大的数JAVA中有类BigInteger可以直接调用,但更常用的方法时借助于数组或字符串表示大数。有了加法可以推导出减法、乘法等运算加法思路无论是数组还是字符串,两数相加的思路是一致,均从数据尾部开始依次相加,有进位则加1,最终返回结果。以字符串为例,牛客网原题输入:两个字符串输出:相加结果的字符串形式示例:“12” + “50” --> “62”public String addBigNum (String s, Stri

2021-07-29 19:57:34 132

原创 二叉树操作篇 -- 二叉树遍历

二叉树遍历二叉树的遍历方式主要有四种:前序遍历:按照“根左右”的顺序遍历中序遍历:按照“左根右”的顺序遍历后序遍历:按照“左右根”的顺序遍历层次遍历:按照每一层进行遍历如下图所示二叉树:前序遍历:1 2 4 5 3 6 7中序遍历:4 2 5 1 6 3 7后序遍历:4 5 2 6 7 3 1层次遍历:1 2 3 4 5 6 7JAVA实现定义二叉树节点public class TreeNode { int val = 0; TreeNode left = n

2021-07-27 15:17:49 137

转载 字典序算法

原文地址:排列的算法(一)——字典序算法1. 排列算法从n个不同元素中取出n个元素的排列,称为n个不同元素的全排列。可以证明,n个元素的全排列的总数是n!。全排列的生成算法就是对于给定的元素集合,用有效的方法将所有可能的全排列无重复无遗漏地列举出来。n个不同元素的排列都可以与n个自然数1、2、……,n的排列一一对应,所以,这里就以n个数字的排列为例说明排列的生成算法。全排列的生成算法就是讨论怎样从一个排列生成它一个新的排列的方法。2. 字典序算法不同的排列,可以从左到右逐个比较对应的元素的顺

2021-07-26 20:48:00 2333

原创 字符串操作篇 -- 字符串的排列

题目描述题目地址输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入:输入一个字符串,长度不超过9,可能有重复,值包含大小写字母返回:输出所有字符串列表题目分析参考官方思路,采用递归回溯法。字典序通俗理解就是从首字母开始按从a~z排列,若首字母相同则按第二字母排序,即查找字典时遵循的查找顺序。可直接使用比较器默认的自然排序对结果进行排列全排列的获取思路如

2021-07-26 19:34:46 382

apache-tomcat-9.0.50.exe

官网下载的安装包

2021-08-14

空空如也

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

TA关注的人

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