摘要:
算法思想 给定一个带权有向图(即有向网)G 和源点 v0,求 v0 到 G 中其他每个顶点的最短路径。限定各边上的权值大于或等于 0。 例如,在图 4.1(a)中,假设源点为顶点 0,则源点到其他顶点的最短距离分别为: 顶点 0 到顶点 1 的最短路径距离是:20,其路径为 v0→v2→v1; 顶点 阅读全文
摘要:
前序遍历一: vector<int> preorderTraversal(TreeNode* root) { stack<TreeNode*> S; vector<int> v; TreeNode* rt = root; while(rt || S.size()){ while(rt){ S.pus 阅读全文
摘要:
0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。 示例 1: 输入: n = 5, 阅读全文
摘要:
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 1: 输入:target = 9输出:[[2,3,4],[4,5]]示例 2: 输入:target = 15输出:[[1,2,3,4, 阅读全文
摘要:
给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2 阅读全文
摘要:
很多服务器项目的实现中都有一句set_non_block(acceptfd),为什么要将acceptfd设为非阻塞? 仔细想想,服务器使用socket_bind_listen三件套进行监听并将listenfd注册到epoll监控后,当有新的连接请求来临,会先通过内核协议栈完成TCP三次握手,这些完成 阅读全文
摘要:
给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符 示例 1: 输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> ro 阅读全文
摘要:
重量级锁?自旋锁?自适应自旋锁?轻量级锁?偏向锁?悲观锁?乐观锁?执行一个方法太难了,到处都是锁。 重量级锁 如果你学过多线程,那么你肯定知道锁这个东西,至于为什么需要锁,我就不给你普及了,就当做你是已经懂的了。 我们知道,我们要进入一个同步、线程安全的方法时,是需要先获得这个方法的锁的,退出这个方 阅读全文
摘要:
1. 校验和: 发送的数据包的二进制相加然后取反,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。 2. 确认应答+序列号(累计确认+seq): 接收方收到报文就会确认(累积确认:对所有按序接收的数据的确认)。TCP给发送的每一个包进行编号 阅读全文
摘要:
根据第三版《UNIX网络编程 卷1》2.7节,TIME_WAIT状态的主要目的有两个: 优雅的关闭TCP连接,也就是尽量保证被动关闭的一端收到它自己发出去的FIN报文的ACK确认报文; 处理延迟的重复报文,这主要是为了避免前后两个使用相同四元组的连接中的前一个连接的报文干扰后一个连接。 很明显,要实 阅读全文