![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刷题小结
依然有清风
通信咸鱼;图像处理渣渣;机器学习膜拜者
展开
-
数据流中的中位数:堆排序
题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。如果数据在容器中已经排序,那么中位数可以由P1和P2指向的数得到,如果容器中数据的数目是奇数,那么P1和P2指向同一个数据。如下图所示:如图整个数据容器分隔成两个部分,位于容器左边部分的数据比右边的数据小,P...原创 2018-03-29 20:53:37 · 609 阅读 · 0 评论 -
二叉树的遍历
前序递归遍历: void preOrder1(BinTree *root) { if(root!=NULL) { cout<<root->data<<" "; preOrder1(root->lchild); preOrder1(root->rchild); } ...原创 2018-03-27 15:10:46 · 142 阅读 · 0 评论 -
刷题小知识点
二维数组的指针写法:#include <iostream>using namespace std;int main(){ int a[3][4] = { 1,2,3,4,5,6,7,8,9,0,10,12 }; for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) cout << a[i][j]...原创 2018-03-23 22:10:18 · 124 阅读 · 0 评论 -
贪心--无重叠区间--C++
给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。 示例 1: 输入: [ [1,2], [2,3], [3,4], [1,3] ] 输出: 1 解释: 移除 [1,3] 后,剩下的区间没有重叠。 示例 2: 输入: [ [1,2], [1,...原创 2018-07-17 16:13:24 · 901 阅读 · 0 评论 -
字符串(数组)循环移位
前几天去腾讯面试,出的一道手写代码题目。 假设有一个数组,[1,2,3,4,5],循环右移两位,变化为[4,5,1,2,3],当时写出来的代码是重新申请了一个数组,所以面试官又让我减少空间复杂度,代码如下: 字符串翻转: void reverse(string &s,int begin,int end)//翻转数组 { while (begin < end) { ch...原创 2018-08-07 16:19:12 · 735 阅读 · 0 评论 -
大数相乘
#include<iostream> #include<string> using namespace std; string multi(string a, string b) { int len1 = a.size(); int len2 = b.size(); //int t[MAX]; int len = len1 + len2 + 1; int *t ...原创 2018-08-07 14:44:37 · 117 阅读 · 0 评论 -
top-k,数组最小(大)的k个数
#include<iostream> #include<vector> using namespace std; void adjustHeap(int arr[], int i, int n)//3.调整大顶堆(仅是调整过程,建立在大顶堆已构建的基础上) { int j = i * 2 + 1;//子节点 while (j<n) { if (j + ...原创 2018-08-20 15:35:09 · 196 阅读 · 0 评论 -
C++优先队列的重载(最小堆、最大堆)
C++优先队列默认是最大堆,所以如果我们要用到最小堆,就需要进行重载来使用。 priority_queue的头文件是<queue>. 1.less和greater,不利用struct进行重载。 priority_queue<int, vector<int>, less<int>>s;//less表示按照递减(从大到小)的顺序插入元素 prio...原创 2018-09-06 14:21:55 · 3974 阅读 · 0 评论