画建筑轮廓

LintCode链接

题目描述

水平面上有 N 座大楼,每座大楼都是矩阵的形状,可以用一个三元组表示 (start, end, height),分别代表其在x轴上的起点,终点和高度。大楼之间从远处看可能会重叠,求出 N 座大楼的外轮廓线。
外轮廓线的表示方法为若干三元组,每个三元组包含三个数字 (start, end, height),代表这段轮廓的起始位置,终止位置和高度。
参考下面的图,黑色线为建筑,红色线即为建筑的轮廓线

阅读全文 »

遍历二查找叉树

LintCode链接

题目描述

设计一个迭代器,该迭代器可以按照以下要求一棵二叉查找树

  • 遍历的顺序按照从小到大的排序规则
  • next与hasNext的时间复杂度平均为O(1)
阅读全文 »

查找无续数组的峰值

LintCode链接

题目说明

给出一个整数数组(size为n),其具有以下特点:

  • 相邻位置的数字是不同的
  • A[0] < A[1] 并且 A[n - 2] > A[n - 1]

假定P是峰值的位置则满足A[P] > A[P-1]且A[P] > A[P+1],返回数组中任意一个峰值的位置。

阅读全文 »

函数声明

1
2
template< class ForwardIt, class UnaryPredicate >
ForwardIt partition( ForwardIt first, ForwardIt last, UnaryPredicate p );

作用

对[first, last)元素进行处理,使得满足p的元素移到[first, last)前部,不满足的移到后部,返回第一个不满足p元素所在的迭代器,如果都满足的话返回last

阅读全文 »

介绍

C++对象在作为函数参数以及返回值的copy策略一直是我困扰的一个问题,特别是在今天看到了C++11的新增加的特性std::move以及右值概念之后,激发了我的求知欲,决定把这一块详细的搞清楚。

阅读全文 »
0%