- 博客(37)
- 资源 (2)
- 收藏
- 关注
原创 单例模式及其多种实现
说到单例模式,大家都很熟悉,这好像是最简单的一个最简单也是容易被问的一个设计模式。以下是几种实现单例模式的方式,一个单例模式肯定有一个私有的构造方法。(1)饿汉式public class SingletonObject1 { private SingletonObject1(){ } private static SingletonObject1 singletonInstance=new SingletonObject1();
2020-12-07 22:00:55
211
原创 线程二三事及Thread详解
目录线程与进程创建线程的几种方式继承Thread类实现Runnable接口最简单的卖票程序前面两种方法的区别run()方法和start()方法的区别线程的生命周期ThreadThread构造方法Thread其他常用方法线程实现生产者和消费者模式Synchronized关键字wait()和Sleep的区别如何在线程里面抛出运行时异常线程与进程 谈到线程,就不得不说一下进程,即使在面试的时候,也常会被问,进程与线程有什么区别呀,什么是进程什么是线程呀。 进程:进程是一个在内存中运行的应用程序。每个进程都有
2020-12-06 22:09:25
550
原创 LeetCode 1030---- 距离顺序排列矩阵单元格
给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C。另外,我们在该矩阵中给出了一个坐标为(r0, c0) 的单元格。返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格(r1, c1) 和 (r2, c2) 之间的距离是曼哈顿距离,|r1 - r2| + |c1 - c2|。(你可以按任何满足此条件的顺序返回答案。)示例 1:输入:R = 1, ..
2020-11-17 17:58:08
176
原创 LeetCode 406----根据身高重建队列
假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4],[4,1][7,1], [5,0], [6,1], [5,2]]输出:[[5,0],[4,1] [7,0], [5,2], [4,4], [6,1], [7,1]] 解题思路:对于这道题,一看就会觉得是插入,但是要怎么个插入法呢?就拿...
2020-11-16 22:45:19
137
原创 LeetCode 1122题----数组的相对排序
给你两个数组,arr1 和arr2,arr2中的元素各不相同arr2 中的每个元素都出现在arr1中对 arr1中的元素进行排序,使 arr1 中项的相对顺序和arr2中的相对顺序相同。未在arr2中出现过的元素需要按照升序放在arr1的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]输出:[2,2,2,1,4,3,3,9,6,7,19]提示:arr1.length, arr2.len...
2020-11-14 16:35:28
578
原创 LeetCode 328题----奇偶链表
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->5->6->
2020-11-13 20:58:01
200
原创 LeetCode 32题---- 最长有效括号
给定一个只包含 '('和 ')'的字符串,找出最长的包含有效括号的子串的长度。示例1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()" 一看这个题目,最值,典型的dp,这题真的是花了我一个多小时,刷题都快刷哭了,昨天刚刚建立起来的觉得自己dp可的自信心又被摧毁的体无完肤,哎,还是要记录一下自己的解题历程。 对一道dp问题的求解可以分为四步:确定状态:...
2020-11-12 22:26:23
109
原创 LeetCode 922----按奇偶排序数组 II
给定一个非负整数数组A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当A[i] 为奇数时,i也是奇数;当A[i]为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。示例:输入:[4,2,5,7]输出:[4,5,2,7]解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。提示:2 <= A.length <= 20000A.length % 2 == 00 <= A[i] <=...
2020-11-12 20:22:32
137
原创 LeetCode 514题----自由之路
电子游戏“辐射4”中,任务“通向自由”要求玩家到达名为“Freedom Trail Ring”的金属表盘,并使用表盘拼写特定关键词才能开门。给定一个字符串 ring,表示刻在外环上的编码;给定另一个字符串 key,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。最初,ring 的第一个字符与12:00方向对齐。您需要顺时针或逆时针旋转 ring 以使 key 的一个字符在 12:00 方向对齐,然后按下中心按钮,以此逐个拼写完 key 中的所有字符。旋转 ring 拼出 key 字
2020-11-11 21:52:34
138
转载 Volatile关键字的一二三
写这个博客来源于一次面试,其实对于Volitail关键字面试大家应该是都是有准备的,什么保证了可见性呀,不能保证原子性呀,但是上次面试官问“Volitail关键字为什么可以保证可见性呢?”,一时语塞,就挂了,背的对Volitail还不够熟悉。参考博客https://www.cnblogs.com/dolphin0520/p/3920373.html因为Volitail关键字涉及到了JMM(JAVA内存模型),所以在此之前,要先了解JMM。以下是整篇文章的目录: 一:内存...
2020-11-10 23:22:03
146
原创 LeetCode 34题---- 在排序数组中查找元素的第一个和最后一个位置
题目:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是O(log n) 级别。如果数组中不存在目标值,返回[-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例2:输入: nums = [5,7,7,8,8,10], target = 6输出: [-1,-1] 解题思路:这个题目咋一看,查找还是...
2020-11-10 20:10:58
106
原创 LeetCode973题------最接近原点的 K 个点
我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。(这里,平面上两点之间的距离是欧几里德距离。)你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。示例 1:输入:points = [[1,3],[-2,2]], K = 1输出:[[-2,2]]解释:(1, 3) 和原点之间的距离为 sqrt(10),(-2, 2) 和原点之间的距离为 sqrt(8),由于 sqrt(8) < sqrt(10),(-2, 2) 离原点更
2020-11-09 18:08:15
208
原创 JVM面试基础及常见面试题
参考博文及书籍:1 深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)2JVM内存模型和面试题解析写的所有面试题均来自与以前面试的经验、网络上说的可能会出现的面试题。想整理起来留着下次面试用,对于不对的,请多多指正1 JDK、JRE和JVM是什么关系(JDK包含JRE,而JRE包 含JVM)JDK:JRE:JVM:1 JVM内存结构2 OOM3 类加载过程4 对象创建过程5 对象的内存布局6 。。。。。...
2020-11-07 22:49:44
946
原创 MySQL面试题全集
这篇文章源自于对秋招面试点的复习,在阿里数据大佬的提点下,总结MySQL的面试知识点主要有以下几点,以后要是想到还会不定时更新,其中知识大部分来自于书本、视频和优秀博客的总结(文章超长预警)。1 事务事务:事务是访问和更新数据库的程序执行的一个逻辑单元;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行。作为一个关系型数据库,MySQL支持事务。 事务的特性(ACID):原子性(Automicity):即整个事务是最小的一个执行单元,不可再分。事务的操作要么完成,...
2020-06-26 16:59:20
7335
4
原创 深克隆和浅克隆
浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。总之深浅克隆都会在堆中新分配一块区域,区别在于对象属性引用的对象是否需要进行克隆(递归性的)。请看以下代码:public class Address { private String...
2019-09-14 11:56:22
323
原创 Java解决有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
面试的时候碰到这道题,后来百度了一下感觉答案不对,而且也比较缺少java版本。就自己写了下。题目描述:有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3的人退出圈子。问问第k个退出的人 的编号解题思路: 1)若k大于人的个数,肯定是没有返回值的,我们把这个返回值定为-1; 2)可以考虑用一个...
2019-08-20 17:25:46
12685
1
原创 leetcode第617题---合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。示例1:输入: Tree 1 Tree 2 ...
2019-08-13 18:45:13
247
原创 leetcode第538题---把二叉搜索树转换为累加树
给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18 / ...
2019-08-13 17:11:28
210
原创 leetcode第572---另一个树的子树
给定两个非空二叉树 s 和 t,检验s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 / \1 2给定的树 t: 4 / \1 2返回 true,因为 t 与 s 的一个子树拥有相同的结构和...
2019-08-13 16:34:25
122
原创 剑指offer---字符流中第一个不重复的字符
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。解题思路:这个题目因为给出了两个函数, 一个insert----->Inser...
2019-08-03 11:38:23
175
原创 剑指offer---链表中环的入口节点
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 解题思路: 对于这个题,我们可以选择遍历一遍整个链表,每次用一个list存起来,然后每存一个节点的时候都看一下list里面是否存在这个节点,如果存在,就为环。且因为我们是从头开始遍历,所以第一个后来遍历到并且存在于list里面的节点肯定是环的入口。 ...
2019-08-02 21:06:43
151
原创 剑指offer---二叉树中和为某一值的路径
题目描述输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)解题思路:这个题目的想法可以是按照先左节点后右节点依次遍历整个树,到达叶子节点,是正确答案就添加,没有就跳过。然后回溯到上一层,再遍历。代码:import java....
2019-08-01 16:23:56
111
原创 拼多多提前批(7月28号笔试题
看到昨天同学拼多多的笔试题,今天试着写了写,因为自己并没有参加过笔试,写出来的只是我自己能想到的测试用例都过了的,如果有错误,欢迎各位大神指出,仅仅是提供一个解题的想法。而且因为自己基本功不够,写出的程序基本事件复杂度都比较高,也欢迎大神提出优化改进的方法。给定两个数组A和B。其中数组A是几乎严格升序排列的,几乎的定义是只需改变其中一个数,即可满足完全升序排列。 你的任务是从数组...
2019-07-29 21:21:35
702
原创 剑指offer---把二叉树打印成多行
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 解题思路:这个题跟它的前一题“把二叉树按照z字型逐层打印”做法基本一致。因为这个是从左到右打印,我们考虑使用队列,队列是先进先出。同样的也是两个队列,一个指向当前打印层,一个记录下一层的节点。当当前层打印完毕之后,把当前层指向下一层。下一层清空后来记录下一层的子节点 代码:ArrayList<...
2019-07-26 21:36:53
119
原创 剑指offer---按之字型顺序打印二叉树
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。解题思路:这道题的重点在于怎么记录每一层的节点。所以我们可以选择两个栈,第一个栈打印当前节点,第二个栈记录下一层的节点。待本层节点全部打印完之后也就是第一个栈为空时,把记录下一层节点的栈赋给当前栈,记录下一层的栈清空。重新记录下一层。...
2019-07-26 21:15:31
179
原创 剑指offer---把数组排成最小的数
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 解题思路:可以手写一个比较函数按照题目意思对每一个数进行大小的比较,然后排序,排序完之后串起来就是最小的数啦 代码:public String PrintMinNu...
2019-07-25 21:08:28
90
原创 背包问题
1 类型布尔值 计数 最值 单一物品 无限多物品 空间优化:1)滚动数组 2)2 重点:背包问题中,数组的大小和总承重有关3 动态规划的四步骤:确定状态:确定状态时根据最后一个问题和子问题 转移方程 初始条件和边界情况 计算顺序4 描述: 你有一个背包,背包有最大承重,商店里有若干物品,都是免费拿,每个物品有重量和价值目标:不撑爆背包的前提下– 装下...
2019-07-14 15:48:54
400
原创 小米2019秋招笔试真题--厨艺大赛奖金
小米食堂每年都会举办一次厨艺大赛,假设参赛的厨师一共有n位(n < 1000),比赛结束后没有公布评分,但是站在领奖台上的一排厨师中每位厨师都能看到与自己相邻的厨师(左或者右)里评分比自己低(看不到比自己分数高的人的分数)的评分。比赛结束之后要发奖金,以1K为单位,每位厨师至少会发1K的奖金,另外,如果一个厨师发现自己的奖金没有高于比自己评分低的厨师的奖金,就会不满意,作为...
2019-07-09 16:35:39
441
原创 Cookie和Session的区别
1 Cookie简介 在网站中,http请求是无状态的。也就是说第一次和服务器连接后并登录成功后,第二次请求服务器仍然不知道是哪个用户。可以使用Cookie来解决这个问题。 第一次登录后服务器会返回一些特殊的信息(Cookie)给浏览器,然后浏览器保存在本地,该用户发送第二次请求的时候,就会自动把上次请求存储的Cookie数据自动放在http报文头中携带给服务器。...
2019-07-08 19:58:54
105
原创 HTTP(超文本传输协议)
HTTP--Hyper Text Transfer Protocol,超文本传输协议,是一种建立在TCP上的无状态连接,整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。1 主要特点1)支持客户端/服务器模式2)简...
2019-07-08 19:51:36
361
原创 TCP协议及TCP三次握手和四次挥手
1 TCP协议简介1) 面向连接的、可靠地、基于字节流的传输层通信协议2) 将应用层的数据流分割成报文段,发送给目标节点的TCP层3) 数据包都有序号,对方收到则发送ACK确认,未收到则重传4 )使用校验和来检验数据在传输过程中是否有误。2 三个重要的TCPflagACK:确认序号标志SYN:同步序号,用于建立连接过程FIN:finish标志,用于释放连接...
2019-07-03 10:53:47
170
原创 leetcode第七题:整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。解题思...
2019-05-24 20:52:05
205
1
原创 leetcode第四题:寻找两个有序数组的中位数
给定两个大小为 m 和 n 的有序数组nums1和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。你可以假设nums1和nums2不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位...
2019-05-16 21:36:30
159
原创 leetcode第三题:无重复字符最长字串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 请注意,你的答案必须是 子串 的长度。对于这个题,可以遍历一遍字符串,给...
2019-05-16 21:02:29
144
原创 SQL简单常用语句
1 新建一张表:create table +表名;CREATE TABLE department2 删除一张表:drop table+表名DROP TABLE department;3在已有的表里面新加属性,新添加到表里面的属性默认值是null:alter table+表名+add 属性ALTER TABLE department ADD admin VARCHAR (20...
2019-05-16 20:09:31
697
原创 剑指offer-判断二叉树是否是一棵平衡二叉树
输入一棵树,判断该二叉树是否是平衡二叉树判断一棵树是否是平衡二叉树:树上每个节点的左孩子和右孩子的高度差不超过1.所以判断一棵树是否是二叉树可以来判断每个节点的左孩子和右孩子的高度,对于一颗二叉树,每个叶子节点的高度为1,如下图,所以每个节点的高度等于左子树和右子树中较高的高度+1 ,可以用递归的方法来解决这个。求出每个节点的高度之后,再判断左右子树的高度差是否超过一代码:...
2018-12-07 14:45:35
154
转载 串行传输和并行传输
传输可以分为并行传输和串行传输,串行传输又有同步传输、异步传输、等时传输三种。 --知乎:https://www.zhihu.com/question/29033993 --CSDN:https://blog.csdn.net/SYP35/article/details/78598442 并行传输:使用多跟数据线一...
2018-10-25 11:04:49
4970
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人