模拟
2 两数相加
朴素解法(哨兵技巧)
- 这是道模拟题,模拟人工竖式做加法的过程:
- 从最低位至最高位,逐位相加,如果和大于等于 10,则保留个位数字,同时向前一位进 1 如果最高位有进位,则需在最前面补 1。
- 做有关链表的题目,有个常用技巧:添加一个虚拟头结点(哨兵),帮助简化边界情况的判断。
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummy = new ListNode(0);
ListNode tmp = dummy;
int t = 0;
while (l1 != null || l2 != null) {
int a = l1 != null ? l1.val : 0; //如果为空 则为0
int b = l2 != null ? l2.val : 0;
t = a + b + t;
tmp.next = new ListNode(t % 10); //只保留个位数,把十位数往下一位加
t /= 10; //得到十位数
tmp = tmp.next;
if (l1 != null) l1 = l1.next;
if (l2 != null) l2 = l2.next;
}
if (t > 0) tmp.next = new ListNode(t);
return dummy.next;
}
大话通信
通信到底是用来干嘛的
- 编码
- 寻址: 移动通信中的FDMA(频分多址)、TDMA(时分多址)、码分多址(CDMA)
- 网络优化:时分复用(TDM)、频分复用(FDM)、波分复用(WDM)
- 任何通信协议的最高层都是应用层
编码
- 香农定理 C=Blog2(1+S/N) B是信道带宽(Hz),S是信号功率(W),N是噪声功率。
- SMR(信噪比,dB)=10lg(S/N)
- 上述公式表明,信道带宽B限制了比特率的增加,信道容量C还取决于系统信噪比(SNR)以及编码技术
- 改变载波以便它能以适合传输的形式表示数据,这就是调制
- 常用编码:曼彻斯特编码、差分曼彻斯特编码、NRZI编码
以太网帧
- 载波侦听多路访问-冲突检测(CSMA/CD)
ATM单元
通信网上的传递可分为同步传递方式(STM)和异步传递方式(ATM) 两种
- STM按时间分片
- ATM需要附加标志位 每个分组作为一个单元独立传输,分组之间的传输间隔为任意时间。
图像和视频编码
MPEG 在压缩的第一步,建立一个参考帧,它是原视频画面的一个拷贝,每15帧加入一个所谓的1帧,而一系列视频画面中,在帧与帧之间只有少量信息发生了变化,有了参考帧,其他帧就很容易被压缩。
寻址
通信网络的方向
- 单工:数据只能在一个方向上流动
- 半双工:可切换方向的单工通信,从某一时刻看,是单工的;从总体看,又是双工的。如对讲机。
- 全双工