自定义博客皮肤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)
  • 收藏
  • 关注

转载 【Java基础】如何正确重写hashcode方法

正确重写hashCode方法

2020-04-29 20:39:02 468

转载 【Java基础】BigDecimal 详解

引言借用《Effactive Java》这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候 BigDecimal 就派上大用场啦。BigDecimal简介BigDec...

2020-04-29 20:24:30 493

原创 【牛客-华为笔试练习】明明的随机数(对输入的数字利用TreeSet实现去重和排序)

题目描述明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成 “去重”与“排序” 的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。Input Pa...

2020-04-29 18:28:21 374

原创 【LeetCode】面试题37.序列化二叉树

面试题37.序列化二叉树请实现两个函数,分别用来序列化和反序列化二叉树。观察题目示例,序列化的字符串实际上是二叉树的 “层序遍历”(BFS)结果,本文也采用层序遍历。通常使用的前序、中序、后序、层序遍历记录二叉树的信息不完整,即可能对应着多种二叉树结果。题目要求的 “序列化” 和 “反序列化” 是 可逆 操作。因此,序列化的字符串应携带 “完整的” 二叉树信息,即拥有单独表示二叉树的能力。...

2020-04-29 00:15:27 260

转载 Java对象生命周期和类生命周期

Java对象生命周期对象的整个生命周期大致可以分为7个阶段:创建阶段(Creation)应用阶段(Using)不可视阶段(Invisible)不可到达阶段(Unreachable)可收集阶段(Collected)终结阶段(Finalized)释放阶段(Free)创建阶段一个Java类(除Object类外)至少有一个父类(Object),这个规则既是强制的,也是隐式的。你可能...

2020-04-24 23:50:10 164

转载 Java执行过程+JVM内存区域划分+Java对象创建过程(对象两种内存分配方式、内存分配的并发问题)+对象的内存布局

1.Java执行过程Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀)然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。在整个程序执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的JVM内存。因此,在J...

2020-04-24 16:00:48 619

转载 缓存--基于linkedHashMap实现LRU缓存淘汰策略

LRU 是 LeastRecentlyUsed 的简写,字面意思则是 最近最少使用。通常用于缓存的淘汰策略实现,由于缓存的内存非常宝贵,所以需要根据某种规则来剔除数据保证内存不被撑满。如常用的 Redis 就有以下几种策略:package LinkedHashMap实现LRU; import java.util.ArrayList;import java.util.Collectio...

2020-04-18 18:03:20 510

原创 【LeetCode】162.寻找峰值(字节后台实习一面)

题目描述:峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2。...

2020-04-17 23:17:00 120

原创 【LeetCode】394. 字符串解码:给定一个经过编码的字符串,返回它解码后的字符串

题目描述:给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数(多位数)。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3...

2020-04-16 16:52:46 5046 1

原创 【LeetCode】690.员工的重要性

给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id。比如,员工1是员工2的领导,员工2是员工3的领导。他们相应的重要度为15, 10, 5。那么员工1的数据结构是[1, 15, [2]],员工2的数据结构是[2, 10, [3]],员工3的数据结构是[3, 5, []]。注意虽然员工3也是员工1的一个下属,但是由于并不是直系下属,因此没有体现在员工1的数据结构中。...

2020-04-16 15:07:56 149

原创 【LeetCode】300. 最长上升子序列:给定一个无序的整数数组,找到其中最长上升子序列的长度

【LeetCode】300. 最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(...

2020-04-15 16:43:21 3419

原创 【剑指Offer】矩阵中的路径:用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径

题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进...

2020-04-09 14:32:57 491

原创 【微众银行】博弈论:初始你只有一次抽卡机会。每次抽卡浪费一次抽卡机会,获得一张卡片。这张卡片上有两个数字,第一个数字代表你能获得的钱,第二个数字代表你能获得的额外抽卡次数。额外的抽卡次数是可以累计的。

题目描述题目描述:抽卡是一类类似于博弈的游戏。现在有一种抽卡方式,描述如下:初始你只有一次抽卡机会。每次抽卡浪费一次抽卡机会,获得一张卡片。这张卡片上有两个数字,第一个数字代表你能获得的钱,第二个数字代表你能获得的额外抽卡次数。额外的抽卡次数是可以累计的。现在,你知道了卡片的数量,所有的卡片上的数字,以及所有卡片的顺序。你只需要安排一种抽卡顺序,使得你能获得钱数最多。输入第一个行一个数...

2020-04-08 23:33:27 935

原创 【微众银行2020实习笔试】博弈论:Cassidy和Eleanore是一对好朋友,她们经常会一起玩游戏。某一天她们玩了一个回文游戏。游戏规则是这样的:给出一个仅包含小写字母的字符串S,在每一个人的回合

题目描述Cassidy和Eleanore是一对好朋友,她们经常会一起玩游戏。某一天她们玩了一个回文游戏。游戏规则是这样的:给出一个仅包含小写字母的字符串S,在每一个人的回合中,她们会进行两个操作:尝试重新排列这个字符串,如果可以把这个字符串排列成回文字符串,则立即获胜。否则,她们必须删掉字符串中的一个字符。已知,Cassidy先手,在两个人都采取最佳策略的情况下,谁可以获胜。...

2020-04-08 22:07:33 782

原创 【微众银行2020实习生笔试】有n位小朋友去小明家里拜年,小明准备了m份礼物。小明想把所有礼物平均分给每个小朋友,每个小朋友得到相同个数的礼物。但是m未必能被n整除,小明可以使用以下两种操作任意多次(

题目描述:有n位小朋友去小明家里拜年,小明准备了m份礼物。小明想把所有礼物平均分给每个小朋友,每个小朋友得到相同个数的礼物。但是m未必能被n整除,小明可以使用以下两种操作任意多次(两种操作可以同时使用)。1、 给其中一个小朋友发红包,收到红包的小朋友会离开小明家。每个红包需要花费a元。2、 购买一个新礼物,每个礼物价值为b元。问小明最少花费多少元,才能使得所有礼物可以被剩下的小朋友平分。输...

2020-04-08 21:49:12 1030

原创 【剑指Offer】剪绳子(动态规划与贪婪)

剪绳子(动态规划与贪婪)题目描述给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0] * k[1] *…*k[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入描述:输入一个数n,意义见题面。(2 <=...

2020-04-08 15:13:58 119

原创 树的不同形态(源自:小红书2019校园招聘笔试)

树的不同形态(源自:小红书校园招聘技术类在线笔试)题目描述给定二叉树T(树深度不超过H<=10,深度从1开始,节点个数N<1024,节点编号1~N)的层序和中序遍历,输出T从左向右叶子节点以及树先序和后序遍历序列输入描述:输入两行,分别代表层序和中序遍历结果,节点编号按单个空格分开输出描述:依次输出 从左向右叶子节点 ,先序, 后序 遍历 。 节点编号按空格分开示例1...

2020-04-07 18:20:55 289

原创 二叉树每个结点均有权值,设计一个算法算出权值最大的叶节点到权值最小的叶节点的距离

二叉树(网易2016实习Java研发工程师编程题)题目描述有一棵二叉树,树上每个点标有权值,权值各不相同,请设计一个算法算出权值最大的叶节点到权值最小的叶节点的距离。二叉树每条边的距离为1,一个节点经过多少条边到达另一个节点为这两个节点之间的距离。给定二叉树的根节点root,请返回所求距离。解法一:利用二进制编码//典型的二进制编码题,算出叶子节点二进制编码,再比编码,计算后缀长度...

2020-04-07 16:18:34 2308

原创 【剑指Offer】二叉树的下一个结点

二叉树的下一个结点题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解析分析二叉树的下一个节点,一共有以下情况:二叉树为空,则返回空;节点右孩子存在,则设置一个指针从该节点的右孩子出发,一直沿着指向左子结点的指针找到的叶子节点,该叶子节点即为下一个节点;节点不是根节点。如果该节点是其父节点的...

2020-04-07 15:33:06 71

原创 【校招真题】每k个结点一组翻转链表

每k个结点一组翻转链表题目描述给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。说明:你需要自行定义链表结构,将输入的数据保存到你的链表中;你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换;你的算法只能使用常数的额外空间。输入描述:第一行输入是链表...

2020-04-04 20:02:30 276

原创 【剑指Offer】链表中倒数第k个结点

【剑指Offer】链表中倒数第k个结点题目描述输入一个链表,输出该链表中倒数第k个结点。快慢指针法,注意while循环条件是判断快指针的下一个结点是否为null/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; ...

2020-04-04 17:54:26 178

原创 [剑指Offer]数值的整数次幂

剑指Offer——数值的整数次幂题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。解法一:直接法注意的问题:1、 关于次幂的问题特殊的情况,比如次幂为负数,或者基数为0时等等复杂的情况。(由于指数是int 类型,所以要区分整数还是负数或者0.)2 、机器中浮点数的比较是由误差...

2020-04-04 15:18:11 139

转载 JVM类加载过程

1.类的加载过程:加载-验证-准备-解析-初始化2.加载阶段(加载阶段主要做三件事情):(1).通过类的全限名来获取此类的二进制流。(2).将这个字节流所代表的的今天存储结构转化为方法区中可运行的数据结构。(3).在内存中生成一个代表这个类的java.lang.Class对象,作为方法区中这个类的各种数据结构的访问入口。3.验证为了确保Class文件中的字节流中包含的信息符合当前虚拟机...

2020-04-01 17:22:48 85

转载 JVM垃圾收集器

1.Serial收集器(新生代)(1)单线程收集器(2)采用复制算法,用于新生代垃圾回收(3)垃圾回收期间需要STW(Stop The World),STW表示垃圾回收线程不与用户线程并发执行2.Serial Old收集器(老年代)(1)与Serial相似(2)采用标记整理算法,用于老年代的立即回收3.ParNew收集器(新生代)(1)是Serial的多线程版本(2)除此之外与S...

2020-04-01 17:13:34 67

转载 JVM垃圾回收的过程

https://www.cnblogs.com/liwangcai/p/10752686.html垃圾回收的过程分为两步:1.判断对象是否死亡(1)引用计数器法:①每当有一个对象引用是,计数器加一,当计数器为0是对象死亡②缺点:无法解决循环引用的问题,假设A引用B,B引用A,那么这两个对象将不会被回收,造成内存泄漏(2)可达性算法分析①通过一系列可作为GC Roots的节点为起始点,...

2020-04-01 17:10:04 128

原创 Java判断一个数是否是2的n次幂

二进制中n一旦是2的幂次方(只出现一个1),必为10,100,1000,10000,100000,…形式;并且n-1为01,011,0111,0111,01111形式。方法:n,n-1两个数按位与&等于零,则为2的幂次方class Solution { public boolean isPowerOfTwo(int n) { return n > 0 &&...

2020-04-01 00:15:05 2971

空空如也

空空如也

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

TA关注的人

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