文章目录
1.Algorithm
1.1 加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
1.1.1 递归求解
- 1.对数组的末尾+1
- 1.1如果是9,该位置为0,
剩余元素进入步骤1
- 1.2如果不是9,该元素+1退出
- 1.1如果是9,该位置为0,
- 2.输出
- 2.1如果首位为0,加一位元素,并且置为1
- 2.2如果首位不为0,直接输出
找到有规律的点,也就是重复的步骤
class Solution {
public int[] plusOne(int[] digits) {
for(int i = digits.length - 1; i >= 0; i--) {
if (digits[i] == 9) {
digits[i] = 0;
} else {
digits[i] += 1;
break;
}
}
if (digits[0] == 0) {
digits = new int[digits.length + 1];
digits[0] = 1;
}
return digits;
}
}
2.Review
3.Tip
3.1 C# Linq之GroupBy()
使用GroupBy后,返回IGrouping<Tey,Source>
接口的枚举对象
foreach(var item in igrouping)
{
item.key //输出分组依赖的内容
item["HRID"] //遍历该组中的每条数据
}
4.Share
4.1 三次握手,四次挥手
4.1.1 三次握手
当客户端和服务端都可以接受
和发送
信息时,TCP连接才可以建立。
就像两个人打电话:
【问题1】为什么不是两次握手:
- 情况一:第二次握手时ACK/和SYC丢失,此时服务端认为连接已经建立,开始发送客户端请求的响应内容,但是客户端还在等待服务端的ACK/SYC,此时就产生了死锁。
- 情况二:客户端发送的SYC在经过很久以后到达服务端,此时客户端已经停止等待响应了,这个SYC其实已经无效,但是服务端收到后就进入链接状态造成资源浪费
4.1.2 四次挥手
【问题2】为什么客户端最后还要等待2MSL?
【问题3】为什么建立连接是三次握手,关闭连接确是四次挥手呢?
【问题4】如果已经建立了连接,但是客户端突然出现故障了怎么办?
【问题5】什么是TIME_WAIT状态?
对三次握手通俗的一个解释
面试必备:三次握手与四次挥手
以下两个讲的差不多
TCP的三次握手与四次挥手理解及面试题(很全面)
TCP的三次握手与四次挥手(详解+动图)