在c++使用vector或者string容器时,所需容器的空间超过容器当前的空间时,会进行扩容,一般都是扩大为原来的两倍。如果一直push_back,容器将会在内部自行扩容,将会影响程序的性能。
pair与vector的不同之处在于,pair允许不同的数据类型
c++中的make_heap(), pop_heap()的头文件为algorithm。作用与priority_queue中的成员函数相同,可以单独使用。
在Github Page上显示图片应当与markdown插入图片相同的做法,先将图片上传,获得图片的地址,然后插入图片的地址即可。将图片用git管理,放在/images路径下。
LeetCode 519. Random Flip Matrix中碰到了如何随机地挑选矩阵中的一个元素的问题。实际上这题目的思路并不难想。
给定正整数n,求出i(0<=i<=n)的二进制表示中1的数量。
求出一系列区间中最多不重叠区间的数量non-overlapping intervals。 int eraseOverlapIntervals(vector<Interval>& intervals) { if (intervals.empty()) return 0; // sort according to end sort(intervals.begin(), intervals.end(), [](Interval& x, Interval& y){return x.end < y.end;}); // count int count = 1, int_end = intervals.at(0).end; for (size_t i = 0; i < intervals.size(); ++i) { if (intervals.at(i).start >= int_end) { count++; int_end = intervals.at(i).end; } } return intervals.size() - count; }
要求实现一个队列或栈,并且在的时间内,完成pop()、push()和max()的操作。
k选取是一个经典的算法问题,找到无序的数组中第k小的数(此处约定最小值为第一小的数)。很容易想到将数组排序,然后取出下标为k-1的元素,该算法的时间复杂度为。显然有更快的方法。
LeetCode 322, 518就是关于硬币置换的问题,都可以用动态规划的方式进行解答,但方法稍有不同。 问题1 给定不同硬币的面额和钱的总数,计算为了凑其总的钱所需最少硬币的数量,若无法凑齐则输出-1。