Algorithm
349. 两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]
说明:
输出结果中的每个元素一定是唯一的。
我们可以不考虑输出结果的顺序。
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
TreeSet<Integer> set = new TreeSet<>();
for(int num: nums1) {
set.add(num);
}
ArrayList<Integer> list = new ArrayList<>();
for (int num: nums2) {
if (set.contains(num)) {
list.add(num);
set.remove(num);
}
}
int[] ret = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
ret[i] = list.get(i);
}
return ret;
}
}
Review
Tip
关于纸质工具和电子工具
何时使用纸质工具:
- 记在纸上是触发灵感、计上心来的好办法。如果你的目标是解决某个问题或提出一种想 法,那就把你想到的随时写在纸上,然后撕下纸贴起来,让写有相关内容的纸片靠在一起, 这样可以帮助你纵观全局,把握主题。
- 如果头脑中考虑的事情很杂乱,那么把它们写到纸上。这个办法简便易行,可以帮助你 理清思路。
什么时候选用数字工具:
- 当有很多随机信息的时候,或者需要与别人共享信息的时候
- 虽然应该保存(诸如遗嘱与合同之类)重要文件或机密文件的纸质版本,但也应该留存 其电子版本,以备原始文件丢失或损毁时使用。
- 可以考虑把较为重要的文档存放到网上,这样就不必担心信息的存储介质日后会过时和遭到淘汰。
Share
报文主体和实体的差异
报文 (message)
是HTTP通信中的基本单位,由8位组字节流(octet sequence, 其中octet为8个比特)组成,通过HTTP通信传输。实体(Entity)
作为请求或响应的有效载荷数据被传输,其内容由实体首部和实体主体组成。
通常报文主体等与实体,只有当传输中进行编码操作时,实体的内容发生变化,才导致它和报文主体产生差异。
压缩传输的内容编码
内容编码指应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接收并负责解码。
常见的内容编码:
- gzip (GNU zip)
- compress (UNIX系统的标准压缩)
- deflate (zlib)
- identity (不进行编码)
分割发送的分块
在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面。
这种把实体主体分块的功能称为分块传输编码(chunked transfer coding)。