data structure
文章平均质量分 65
smallplum123
这个作者很懒,什么都没留下…
展开
-
找出文件中最高频率的前k个单词
很久之前参加一个小公司实习的线下笔试,做了这个题目,感觉还蛮有意思的。想做个记录。 一、题目 Write a program for displaying the ten most frequent words in a file such that your program should be efficient in all complexity measures. 问题的关原创 2016-06-06 00:59:11 · 2395 阅读 · 0 评论 -
经典排序 之 快排
1. 快速排序时间复杂度为O(nlogn) , 空间为O(logn). 2. 先贴一个手写的代码 void quickSort(vector& array, int start, int end) { if(start >= end) return; int i = start, j = end; int temp = array[start]; while(原创 2017-03-21 11:59:56 · 477 阅读 · 0 评论 -
经典排序 之 堆排
1. 堆排的时间复杂度为O(nlogn), 空间复杂度为O(1)。 2. 先上原汁原味手写的代码 void heapAdjust(vector& array, int len, int idx) { int left = idx * 2 + 1; //左孩子 int right = left + 1; //右孩子 if(left < len || right原创 2017-03-21 13:42:53 · 286 阅读 · 0 评论 -
升级版背包问题
今天晚上做了一下牛客网的模拟统考,报的C++。三个编程题大概1小时做完。前两道比较简单,也没多想,就想着用遍历来解决就好了。后面一个明显的背包问题,只不过这个背包稍微升级了一点。 题目大意: 这个世界是由0, 1组成的,每一件物体都是有01串构造,现在有 x 种物体,牛牛有 n 个0,m 个1,请问牛牛最多可以构造多少件物体。 输入样例: 3 3 1 1 00 100原创 2017-03-23 21:13:43 · 766 阅读 · 0 评论 -
经典排序 之 归并
1. 归并排序时间复杂度为O(nlogn),空间复杂度为O(n),这是因为需要一个辅助数组。 2. 自己写的代码: void merge(vector& data, int start, int mid, int end, vector& temp) { int i = start, j = mid + 1, k = 0; while(i <= mid && j <= end) {原创 2017-04-14 15:42:51 · 341 阅读 · 0 评论 -
经典排序 之 几种排序比较
#include #include using namespace std; void heapAdjust(vector& array, int len, int idx) { int left = idx * 2 + 1; int right = left + 1; if(left < len || right < len) { int max原创 2017-03-21 14:30:34 · 361 阅读 · 2 评论 -
读写文件小技巧笔记
文件的读写主要是两种,一种是 FILE, 另一种是 stream。 其中 FILE 的头文件为 . 而 stream 的头文件为 一、FILE FILE *fp; //初始化 fopen_s(&fp, filename, "r"); //打开文件 fseek(fp, offset, SEEK_SET); //fseek可以对 fp 进行偏移调整,其中SEEK_SET表示从文件的首原创 2017-07-12 20:51:59 · 474 阅读 · 0 评论 -
最短路径
经典 Dijkstra 算法: Dijkstra算法解决的是,单源的最短路径问题,也就是求解从点A到点B的最短距离。 基本思想: 用动规的思想,用dist[i]表示,从点A到点i 的最短距离。初始化的时候为INF。 从点A开始,访问这个点,对他周边连接的点进行辐射,计算他们的最短距离,然后选择一个距离最近的点,访问这个点,设置其为新的起点,然后对其周边连接的点进行辐射,继续计算他们原创 2017-08-19 15:15:34 · 300 阅读 · 0 评论 -
链表排序
链表的排序,虽然没有数组能够方便的找到首尾位置。但是也可以通过 快排 和 归并 排序,将时间复杂度控制在 O(nlogn) 内。他们都是通过递归进行实现的,但不同的是快排可以理解为自顶向下,归并可以理解为自底向上。 #include #include #include using namespace std; struct ListNode { int value; Lis原创 2017-08-31 14:44:37 · 189 阅读 · 0 评论