摘要: 题目:设计一个算法发现一个数组中和为指定值的所有数对。数组是无序的且值可能重复。 分析: 有一种方式是排序+双指针。 另一种是先用map统计,再在map中查找target-num。这里可以使用unordered_map(也就是哈希),时间复杂度是O(n). vector<vector<int>> p 阅读全文
posted @ 2020-03-25 22:16 Rogn 阅读(714) 评论(0) 推荐(0) 编辑
摘要: 红黑树的特点 红黑树是二叉查找树,但在每个节点增加一个存储为表示节点的颜色,可以是红色或黑色(非红即黑),通过对任意一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长两倍。因此,它是一种弱平衡二叉树,相对于严格的AVL树来说,它的旋转次数少,所以对于查找、插入、删除较 阅读全文
posted @ 2020-03-25 11:44 Rogn 阅读(5871) 评论(0) 推荐(0) 编辑
摘要: select/poll/epoll 都是 I/O 多路复用的具体实现,select 出现的最早,之后是 poll,再是 epoll。 select int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, stru 阅读全文
posted @ 2020-03-25 09:20 Rogn 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 一个输入操作通常包括两个阶段: 等待数据准备好 从内核向进程复制数据 对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待数据到达时,它被复制到内核中的某个缓冲区。第二步就是把数据从内核缓冲区复制到应用进程缓冲区。 Unix 有五种 I/O 模型: 阻塞式 I/O 非阻塞式 I/ 阅读全文
posted @ 2020-03-25 09:01 Rogn 阅读(467) 评论(0) 推荐(0) 编辑