![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javaSE
文章平均质量分 81
周末的丢
这个作者很懒,什么都没留下…
展开
-
构建连乘数组
https://www.nowcoder.com/questionTerminal/94a4d381a68b47b7a8bed86f2975db46给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0]= A[1] * A[2] * … * A[n...原创 2020-03-13 12:14:05 · 166 阅读 · 0 评论 -
最小公倍数
https://www.nowcoder.com/questionTerminal/22948c2cad484e0291350abad86136c3输入两个正整数A和B。输出A和B的最小公倍数。结论:比如a和b两个数 ,a*b =ab的最大公约数 * 最小公倍数所以求最小公倍数,求出最大公约数即可import java.util.Scanner;public class Main {...原创 2020-03-11 21:58:36 · 152 阅读 · 0 评论 -
初识背包算法(神奇的口袋)
今天第一次认识到背包算法 这个还是比较好理解的比如有一个数组[1,2,3,4] , 数组内可以随意组合,但是每个数字只能出现一次,问有几种结果结果就是 1 2 3 4 1+2 1+3 1+4 1+2+3 1+2+4 2+3 2+4 2+3+4 3+4 1+2+3+4而我们的背包算法就是做这个的比如我们有一个书包 他的重量是0我们将数字[1,2,3,4]看成书包的1 2 3 4层我们没到...原创 2020-03-06 12:58:42 · 314 阅读 · 0 评论 -
类加载器和双亲委派机制
每个开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这个异常背后涉及到的是Java技术体系中的类加载机制. 本文简述了JVM三种预定义类加载器,即启动类加载器,扩展类加载器和系统类加载器,并介绍和分析它们之间的关系和类加载所采用的双亲委派机制,给出并分析了与Java类加载原来相关的若干问题.版权声明:本文作者:书呆子Rico作者博客地址:ht...原创 2020-02-27 19:12:40 · 336 阅读 · 0 评论 -
关于类加载机制
一、类加载机制概述我们知道,一个.java文件在编译后会形成相应的一个或多个Class文件(若一个类中含有内部类,则编译后会产生多个Class文件),但这些Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能被运行和使用。事实上,虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型的过程就是虚拟机的 类加载机制...原创 2020-02-27 16:18:53 · 132 阅读 · 0 评论 -
关于JVM内存回收(垃圾回收)
几个问题要搞清楚问题一:什么叫垃圾回收机制?垃圾回收是一种动态存储管理机制,它自动的释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能.当一个对象不再被引用时,内存回收它占领的空间,以便空间被后来的新对象使用,以免造成内存泄漏问题二:Javel的垃圾回收有什么特点?Java语言不允许程序员直接控制内存空间的使用.内存空间的分配和回收都是由JRE负责在后台自动进行的,尤...转载 2020-02-17 19:54:21 · 375 阅读 · 0 评论 -
选择题Day2
1.下列哪些语句关于内存回收的说明是正确的?A 程序员必须创建一个线程来释放内存B 内存回收程序负责释放无用内存C 内存回收程序允许程序员直接释放内存D 内存回收程序可以在指定的时间释放内存对象2.___技术是一种可以使音频,视频和其他多媒体信息在 Internet 及 Intranet 上以实时的,无需下载等待的方 式进行播放的技术。A 流媒体 B 多媒体 C 复合媒体 D 音...原创 2019-12-03 11:43:52 · 361 阅读 · 2 评论 -
合法括号序列判断
题目网址:https://www.nowcoder.com/questionTerminal/d8acfa0619814b2d98f12c071aef20d4对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。“(()())”,6返回:true测试样例:“()a()()”,7返回:false...原创 2019-12-02 18:59:48 · 216 阅读 · 0 评论 -
字符串中找出连续最长的数字串
题目网址:https://www.nowcoder.com/questionTerminal/bd891093881d4ddf9e56e7cc8416562dwhile(cur < arr.length){只是往后移,在这里面操作就行了import java.util.Scanner;public class Main{ public static void main(St...原创 2019-12-02 17:58:39 · 182 阅读 · 0 评论 -
关于哈希表,你需要知道这些
一、哈希表顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O( ),搜索的效率取决于搜索过程中元素的比较次数。理想的搜索方法: 可以不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一...原创 2019-11-24 21:39:22 · 334 阅读 · 0 评论 -
关于二叉搜索树,你需要知道这些
二叉搜索树:针对任何一颗子树来说都要满足,父节点>左子树,父节点<右子树。(父节点是中间大小的元素。堆:父节点和子节点中间的关系,堆顶元素一定是最大值或者最小值二叉搜索树中序遍历的结果是一个有序的序列具体实现主要有三个核心操作(增删查),对于二叉搜索树,修改操作不能针对key进行修改package package1123;public class BinarySea...原创 2019-11-23 21:28:45 · 232 阅读 · 0 评论 -
旧键盘(坏键盘打字)
题目网址:https://www.nowcoder.com/questionTerminal/f88dafac00c8431fa363cd85a37c2d5e旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有...原创 2019-11-21 20:47:45 · 263 阅读 · 1 评论 -
前K个高频单词
题目:给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。事例:[“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2 输出: [“i”,“love”] 解析: “i” 和 “love” 为出现次数最多的两个单词,均为2次。注意,按字母顺...原创 2019-11-20 21:23:05 · 249 阅读 · 4 评论 -
复制带随机指针的链表
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。深拷贝的意思是两个引用,分别指向到两个对象,但是这两个对象里面的内容是一样的浅拷贝的意思是两个引用,指向的是同一个对象这里我们采用一个比较灵活的思路:1.创建一个HashMap,key存的是原链表的结点,value存的是新链表的结点,这两个结点是对称的。2.把旧链表的结...原创 2019-11-20 20:02:29 · 156 阅读 · 1 评论 -
只出现一次的数字(Map试题)
题目网址:https://leetcode-cn.com/problems/single-number/跟我之前写的一篇文件类似,揪出单身狗这道题的题目也是类似题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。例如输入: [2,2,1]输出: 1方法一:按位异或的方法:根据题目的特殊性,只有一个元素出现一次,其余元素...原创 2019-11-20 19:23:29 · 151 阅读 · 0 评论 -
10分钟学会七大排序(2)
五、冒泡排序public void bubbleSort(int[] array){ for (int bound = 0; bound < array.length; bound++) { for (int cur = array.length - 1; cur > bound ; cur--) { if(ar...原创 2019-11-18 20:03:50 · 189 阅读 · 0 评论 -
10分钟学会七大排序(1)
一、插入排序直接插入排序-原理:整个区间被分为有序区间无序区间每次选择无序区间的第一个元素,在有序区间内选择合适的位置插入具体实现的代码如下:import java.util.Arrays;public class SortDemo { public static void insertSort(int[] array){ //[0,bound)为拍好序的...原创 2019-11-17 16:04:41 · 248 阅读 · 2 评论 -
关于优先级队列(堆),你需要知道这些
1、二叉树的存储顺序1.1存储方式使用数组保存二叉树结构,方式即将二叉树用层序遍历方式放入数组中。一般只适合表示完全二叉树,因为非完全二叉树会有空间的浪费。这种方式的主要用法就是堆的表示。1.2.下标关系已知双亲(parent)的下标,则:左孩子(left)下标 = 2 * parent + 1;右孩子(right)下标 = 2 * parent + 2;已知孩子(不区...原创 2019-11-11 16:15:43 · 577 阅读 · 1 评论 -
字符集合
题目网址:https://www.nowcoder.com/questionTerminal/784efd40ed8e465a84821c8f3970b7b5输入一个字符串,求出该字符串包含的字符集合题目描述:每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。例子输入abcqweracb输出abcqwer这道题的思路是这样的我们需要额外借助...原创 2019-11-02 19:25:41 · 421 阅读 · 0 评论 -
判断一棵树是不是完全二叉树(两个阶段)
判断一棵树是不是完全二叉树对二叉树进行层序遍历遍历过程中,状态分成两个阶段a)第一阶段,每个节点都有两个子树b)第二阶段,遇到一个特殊的节点,可能只有左子树可能没有子树,就开启第二阶段(这个临界节点如果是有右子树,没有左子树,那么说明一定不是完全二叉树)c)第二阶段中,接下来每个节点都必须没有子树,如果要是有子树,就不是完全二叉树public boolean isComplete(...原创 2019-11-06 20:18:38 · 208 阅读 · 0 评论 -
层序遍历二叉树
层序遍历层序遍历的核心思路:需要一层一层的访问,一层访问完毕,再访问下一层,借助一个队列创建一个队列辅助进行遍历先把root插入队列循环取队首元素,访问这个元素把当前这个队首元素左子树和右子树都插入队列中重复执行3遍历到队列为空就结束了public void levelOrder(TreeNode root){ if(root == null){ ...原创 2019-11-06 19:50:54 · 247 阅读 · 0 评论 -
判断是不是对称二叉树,旋转二叉树
给定一个二叉树,检查它是否是镜像对称的。思路:判断一棵树是不是对称的,可以看看左右子树是不是镜像关系如果是空树,是对称接着判断左右子树是不是对称的2.1如果两个树都是空树,是镜像2.2,如果一个空一个非空,不算镜像2.3如果两棵树都不为空a)比较根节点是否相同,不相同,不是镜像b)递归比较子树,t1.left 和t2.right ,再看 t1.right和t2.left是不是...原创 2019-11-05 22:30:08 · 135 阅读 · 1 评论 -
判断是否是平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。对于每一个结点来说都要满足左右子树深度之差 <= 1思路:如果是空树,算平衡如果没有子树,也算平衡求一下左右子树的高度,判断一下差值是否小于1,不满足return false递归判定左子树右子树是不是也是平衡/** * Defin...原创 2019-11-05 19:54:42 · 135 阅读 · 1 评论 -
求二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。借助递归把问题拆分1+左子树的最大深度+右子树的最大深度 的最大值1.空树,深度为02.只有一个根节点,没有左右子树,深度13.1 + max(左子树的深度+右子树的深度)/** * Definition for a binary tree node. * public class Tree...原创 2019-11-05 18:32:53 · 390 阅读 · 0 评论 -
判断一颗树是不是另一棵树的子树
s为大树,t为小树给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。题目网址:https://leetcode-cn.com/problems/subtree-of-another-tree/思路:两个树都是空树,返回true如果两个树一个是空,一个不是空,不包...原创 2019-11-05 18:06:54 · 584 阅读 · 2 评论 -
给定两个二叉树,判断它们是否相同
题目网址:https://leetcode-cn.com/problems/same-tree/思路如下1.如果两棵树都是空树,直接返回true2.一棵树为空一棵树不为空,返回false3.如果都不为空树a)比较根节点的值是否相同,如果不相同返回falseb)递归比较左子树和比较右子树是否相同大事化小判定两棵树是否相同=> 比较根节点是否相同+比较左子树右子树是否相同/**...原创 2019-11-05 17:21:48 · 819 阅读 · 1 评论 -
遍历二叉树基础面试题
1,二叉树的前序遍历题目网址:https://leetcode-cn.com/problems/binary-tree-preorder-traversal/给定一个二叉树,返回它的 前序 遍历我们的思路很简单,访问根节点,递归遍历左子树,递归遍历右子树/** * Definition for a binary tree node. * public class TreeNode {...原创 2019-11-05 16:27:17 · 540 阅读 · 1 评论 -
javap看编译器优化
有这么一道题下面这行代码中,创建了几个String对象 String str = "hello" + "world" + 360;按照我们原有的理解,“hello”是一个对象,“world”是一个对象,360也将转成一个对象。最后又创建一个新对象,将这三个字符串拼接。这样就是4个对象了。但事实上只创建了一个对象,这件事情就涉及了“编译器优化这一件事”编译器优化做的最核心的...原创 2019-11-05 14:57:46 · 282 阅读 · 0 评论 -
关于二叉树,你需要知道这些。
什么是树树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树。例如我画这么一颗树节点的度:一个节点含有的子树的个数称为该...原创 2019-11-03 21:54:23 · 468 阅读 · 1 评论 -
实现一个最小栈
题目网址:https://leetcode-cn.com/problems/min-stack/设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。常数时间的意思是时间复杂度是O(1);思路是:用空间换时间,用额外的空间把最小的元素提取保存好我们创建两个栈,A和BA用来表示栈中的数据B专门用来存当前栈对应的最小值。AB两个栈,第一次push时,A和B都...原创 2019-11-03 19:27:54 · 194 阅读 · 1 评论 -
用栈实现队列
题目网址:https://leetcode-cn.com/problems/implement-queue-using-stacks/这题的思路与”用队列实现栈“是类似的。这里我们需要两个栈来辅助我们实现队列,两个栈分别是A和BA栈:负责入队列操操作,B栈负责出队列操作入队列操作:需要先判断一下B是不是空栈,如果是空栈,就直接push,如果不是空,就需要将B的元素push到A中,保持原有队...原创 2019-11-03 18:28:40 · 109 阅读 · 2 评论 -
关于对象值的比较顺序
认识 Comparablepublic interface Comparable<E> { // 返回值: // < 0: 表示 this 指向的对象小于 o 指向的对象 // == 0: 表示 this 指向的对象等于 o 指向的对象 // > 0: 表示 this 指向的对象等于 o 指向的对象 int compareTo(E ...原创 2019-11-03 17:27:15 · 156 阅读 · 0 评论 -
面试问起“==”和“.equals()"的区别,请这么回答
== 和 equalsp == q 表示 p和q两个引用指向同一对象p.equals(q) 表示p指向的对象和q指向的对象是否值语义相等。package package11_3;class Card{ public String suit; public Card(String suit) { this.suit = suit; }}publ...原创 2019-11-03 16:50:41 · 2604 阅读 · 0 评论 -
用队列实现栈
题目网址:https://leetcode-cn.com/problems/implement-stack-using-queues/我们知道栈的出入栈方式是:后进先出队列的方式是:先进先出让队列实现栈,我们就需要用到两个队列了。这里我们创建两个队列A,B我这里直接用链表来实现 LinkedList<Integer> A = new LinkedList<>()...原创 2019-11-02 17:14:48 · 189 阅读 · 2 评论 -
有效的括号
题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。实例1:输入: “()”输出: true实例2:输入: “()[]{}”输出: true实例3:输入: “(]”输出: false实例4:...原创 2019-11-01 19:29:26 · 97 阅读 · 0 评论 -
关于队列,你需要知道这些
队列:先进先出队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First InFirst Out) 入队列:进行插入操作的一端称为队尾(Tail/Rear) 出队列:进行删除操作的一端称为队头。队列也是一种特殊的线性表也是只支持三个核心操作入队列出队列取队首元素队列的一些进化版本:1.优先队列。2.消息队列。给每个数据引入了...原创 2019-11-01 19:02:21 · 314 阅读 · 1 评论 -
关于栈,你需要知道这些
分别用四个字描述栈和队列栈:后进先出队列:先进先出栈栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。它的三个核心操作入栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。(最后吃的在肚子上面)出栈:栈的删除操作叫做出栈。出数据在栈顶...原创 2019-11-01 17:43:41 · 183 阅读 · 1 评论 -
杨辉三角
在线OJ网址https://leetcode-cn.com/problems/pascals-triangle/杨辉三角我们都很了解了,现在我们要编写这么一个程序,例如在这里我们输入5就会输出一个5行的杨辉三角如下这道题的思路我分为一下几个步骤合法性判断,如果输入的行数小于0,返回一个空链表第一行永远等于1,如果输入行数为1,则输出为1第二行永远是两个1,如果输入行数为2,则输入,...原创 2019-11-01 16:48:25 · 451 阅读 · 1 评论 -
关于List的常用方法和扑克牌练习
package package10_29;import java.util.ArrayList;import java.util.List;public class TestList { public static void main(String[] args) { //1.创建list的实例 List<String> list = ...原创 2019-10-29 19:57:40 · 260 阅读 · 0 评论 -
Map和Set的基本操作
import java.util.HashMap;import java.util.Map;public class Test2 { public static void main(String[] args) { Map<String,String> map = new HashMap<>(); //使用put插入键值对 ...原创 2019-10-28 17:33:55 · 297 阅读 · 0 评论