ARTS挑战第八周

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

关于纸质工具和电子工具
何时使用纸质工具:

  1. 记在纸上是触发灵感、计上心来的好办法。如果你的目标是解决某个问题或提出一种想 法,那就把你想到的随时写在纸上,然后撕下纸贴起来,让写有相关内容的纸片靠在一起, 这样可以帮助你纵观全局,把握主题。
  2. 如果头脑中考虑的事情很杂乱,那么把它们写到纸上。这个办法简便易行,可以帮助你 理清思路。

什么时候选用数字工具:

  1. 当有很多随机信息的时候,或者需要与别人共享信息的时候
  2. 虽然应该保存(诸如遗嘱与合同之类)重要文件或机密文件的纸质版本,但也应该留存 其电子版本,以备原始文件丢失或损毁时使用。
  3. 可以考虑把较为重要的文档存放到网上,这样就不必担心信息的存储介质日后会过时和遭到淘汰。

Share

报文主体和实体的差异

  • 报文 (message)
    是HTTP通信中的基本单位,由8位组字节流(octet sequence, 其中octet为8个比特)组成,通过HTTP通信传输。

  • 实体(Entity)
    作为请求或响应的有效载荷数据被传输,其内容由实体首部和实体主体组成。

通常报文主体等与实体,只有当传输中进行编码操作时,实体的内容发生变化,才导致它和报文主体产生差异。

压缩传输的内容编码

内容编码指应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接收并负责解码。

常见的内容编码:

  • gzip (GNU zip)
  • compress (UNIX系统的标准压缩)
  • deflate (zlib)
  • identity (不进行编码)

分割发送的分块

在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面。

这种把实体主体分块的功能称为分块传输编码(chunked transfer coding)。

推荐阅读更多精彩内容