- 博客(12)
- 收藏
- 关注
原创 2021-10-08
螺旋矩阵给你一个 m 行 n 列的矩阵 matrix,请按照顺时针螺旋顺序 ,返回矩阵中的所有元素。例如:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]题目来源:力扣(螺旋矩阵)解法:1.思路:从矩阵的左上角开始遍历——>右上角——>右下角——>左下角——>左上角减一;依此循环,所以需要四个变量记录上下左右的位置,移动指针变量。public class LXJZ { publi...
2021-10-08 11:21:31
74
原创 2021-08-22
二叉树的层序遍历层序遍历思维:一层一层的遍历,先进先出的思想,所以可以使用队列来存放结点用于遍历(此处使用了LinkedList,因为其实现了Deque接口,可以当做双端队列使用)。先将根结点加入队列,出队列时记录该结点(并将该结点打印或者也可以存放到一个集合中(看自己喜好)),记录结点是为了用于判断其是否有左子结点、右子结点,有则继续加入队列……依次循环遍历整棵树//层序遍历public static void/*ArrayList<Integer>*/ cenErgodic(Tree
2021-08-22 17:52:25
70
原创 2021-08-20
二叉树基础遍历——非递归方法内部结点类即主函数中方法调用public static void main(String[] args) { TreeNode g = new TreeNode(null, null, 2); TreeNode e = new TreeNode(g, null, 4); TreeNode d = new TreeNode(null, null, 5); TreeNode b = new TreeNode(d, e, 7); TreeNode f =
2021-08-22 16:37:16
58
原创 2021-08-19
寻找最长不重复子串题目:给你一个字符串 s,求出 s 中最长不重复子串的长度。解法:思路:比较容易想到的就是滑动窗口,如字符出 “abcdacbd”,若窗口中目前为 abc,继续向右滑动窗口,出现了 a 与窗口中元素重复,则将窗口左沿右移(可以理解为将左边的a移除窗口),移到与当前a重复的集合里元素的下一位置b处,右沿继续右移动。因为要求不重复子串,因此这里借助一个map集合,键存字符元素,值存该字符对应的位置。public class subNoRepeat{ public static vo
2021-08-19 19:39:17
67
原创 2021-08-19
最长回文子串题目:给你一个字符串 s,求出 s 中最长回文子串。**方法1:**首先想到的解题思路是暴力解法,即遍历给出的字符串,直接罗列所有子串,判断是否为回文,是则记录该字符串及其长度……若又出现一个回文子串,且长度大于之前记录的子串长度,则修改记录回文串和长度的值。public class MaxStr{/* * 方法1:暴力解法:罗列所有子串,检查其是否为回文及其长度 */ public static void main(String[] args) { String str
2021-08-19 16:04:41
40
原创 2021-08-17
寻找旋转排序数组中的最小值已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]给你一个元素值 互不相同 的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。题目来源:力扣(LeetCode)算法题。以下为两
2021-08-17 20:51:27
135
原创 2021-08-17
**TCP与UDP的区别**TCP与UDP的区别,应该是个会被问的频率最高的一个面题。1.TCP传输控制协议TCP——提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段(segment)TCP的主要特点:①面向连接的运输层协议②每一条TCP连接只能是点对点(1对1的);③TCP提供可靠交付的服务(传送数据:无差错、不丢失、不重复、按序到达)④TCP提供全双工通信(这应该也是释放连接需要四次挥手的原因之一(个人理解))⑤面向字节流:“流”指的是流入到进程或从进程流出的字节序列。
2021-08-17 11:44:36
53
原创 2021-08-16
拥塞控制实现拥塞控制的几种方法:慢开始、拥塞避免、快重传、快恢复。慢开始一般和拥塞避免配合使用,快重传配合快恢复,因此以下将分为两大块来描述1.慢开始与拥塞避免首先,需要知道什么情况下能说明网络发生拥塞。当发送方发送数据后,一段时间未接收到收方的确认,即可认为网络发生了拥塞。慢开始:即假设出事cwnd=1,每经过一个RTT(一个轮次)时间,窗口值加倍。例如:起始cwnd=1,发送窗口大小也等于该窗口值,发方发送M1报文段,收方收到后向发方发送确认,发方收到确认后cwnd=1+1=2。再发送时,
2021-08-16 13:26:16
84
原创 2021-07-21
**TCP三次握手与四次挥手:**一、三次握手第一次:客户端发送到服务器:发送请求连接标志SYN=1,发送自己的字节流序号seq=x(服务器知道自己接收正常,客户端发送正常)第二次:服务器收到后发给客户端:发送请求连接标志SYN=1,确认号ACK=1,客户端的确认号ack=x+1,自己的序号seq=y(客户端知道:自己发送正常,接收正常,服务器的发送正常,接收也正常)第三次:客户端收到后回复服务器:发送确认号ACK=1,发送对方的确认号ack=y+1,发送自己的序号seq=x+1(服务器知道自己
2021-07-21 15:29:08
46
原创 2021-06-30
二叉树的实现及其基础遍历(前序、中序、后序)实现1.查找二叉树的实现定义一个查找二叉树的类:以键值对形式存储元素,让键(泛型)继承Comparable接口,方便在插入时使得结点的键之间的比较(有序)public class BinaryTree<Key extends Comparable<Key>, Value> { // 记录根结点 private Node root; // 记录树中的结点个数 private int N; //结点内部类 //插入删除方
2021-06-30 16:57:35
50
原创 2021-06-27
## 复习总结String、StringBuffer和StringBuilder的底层原理及区别首先是String:1.当使用引号引起来的直接字符串时(下面以“abc”为例),首先会去字符串常量池去找有没有该字符串的引用,如果没有则去堆中创建“abc”字符串对象(地址为0x0001),去常量池中注册该地址的引用,并将字符串对象(其实是地址值)返回给一开始的变量引用。如果常量池中有“abc”则直接使用。2.new对象时,不会再去常量池找,直接在堆中创建对象使用,即使常量池没有“abc”也不会主动去常量池
2021-06-27 09:54:08
65
原创 2020-08-03
HashMap集合的键key有自动排序功能?我也是复习的时候偶然看到某个视频教程讲读取文件并按照行首的序号排序后重新写回该文件的一个案例,视频里讲的是HashMap的键有自动排序的功能。举例:给出要读取的文件中序号为1-9乱序,用HashMap一试,这确实按照升序排好了,但其实你多增加几个序号试试……怀疑人生的感觉(这就是当时的我),老师错了?还是我记错了?你没有记错,HashMap集合是无序的,不能保证(键值对)存储和取出的顺序。所以 key没有自动排序的功能,就算你看到的1-9是顺序的,也是个意外
2021-05-06 10:21:15
193
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人