
数据结构与算法
文章平均质量分 85
雪伦_
这个作者很懒,什么都没留下…
展开
-
海量数据处理
本文转自结构之法算法之道blog1、何谓海量数据处理?所谓海量数据处理,其实很简单,海量,海量,何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。那解决办法呢?针对时间,我们可以采用巧妙的算法搭配合适的数据结构,如Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie/,针对空间,无非就一个办法:大而化小:分而治之/转载 2016-08-07 22:39:00 · 3017 阅读 · 0 评论 -
暴力枚举法专题
介绍 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。以全排列为基础可以扩展出很多关于分布、期望等问题。本文主要介绍两种模拟全排列的方式。 1.next_permutation 在C++中,algorithm文件提供了next_permutation这一函数的实现,这一函数在使用时,需要保证数组有序,原创 2016-08-03 10:59:20 · 2042 阅读 · 0 评论 -
数组专题
简介 输入:一维数组 输出:只出现过一次的数 情形一 只有一个数出现过一次,其他数都出现两次。此时,可以充分利用题目的特征,通过异或运算求解。int only_only_time_num_other_two(vector<int> vec) { int result = 0; for (int i = 0; i < vec.size(); i++) {原创 2016-07-26 15:53:19 · 3060 阅读 · 0 评论 -
字符串专题
介绍 输入:两个有序的数组,K 输出:在两个数组中排第K小的数 效果图: 1.暴力搜索法 不断两两比较,时间复杂度为O(M+N)int brute_way(int a[],int a_len,int b[],int b_len,int k) { //终止条件 if(a_len == 0) return b[k-1]; if(b_len == 0)原创 2016-07-24 16:09:19 · 1941 阅读 · 0 评论 -
链表专题
声明:部分试题、解决方案来自LeetCode,本文旨在学习1.数据结构普通的单链表及构造函数struct Node{ int val; Node* next; Node(int value,Node* n = NULL):val(value),next(n){}; };2.合并两个有序序列合并两个有序序列是合并K个有序序列的子问题Node* merge_two_sorted_原创 2016-07-23 22:04:56 · 1490 阅读 · 0 评论 -
分治法专题
1.分解任务一 将有二个有序数列vec[first…mid]和vec[mid…last]合并。 void merge_array(vector<int> &vec,int first,int mid,int last,vector<int> &tmp) { int i = first, j = mid+1; int k = 0; while (i <= mid && j <=原创 2016-07-22 12:44:25 · 1429 阅读 · 0 评论 -
贪心法专题
1.Jump GameGiven an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that position.Determine原创 2016-07-21 22:08:46 · 1491 阅读 · 0 评论 -
动态规划专题
1.0-1背包设计一个动态规划算法,通常可按照以下几个步骤进行: (1) 找出最优解的性质,并刻画其结构特征。 (2) 递归地定义最优解的值 (3) 以自底而上的方式计算出最优值 (4) 根据计算最优值时得到的信息,构造一个最优解。对于一个给定的问题,若具有以下两个性质,则可以考虑用动态规划法来求解。(1) 最优子结构。如果一个问题的最优解中包含了其子问题的最优解,就说该问题具有最优子结构。原创 2016-07-16 22:36:24 · 3788 阅读 · 0 评论 -
二叉树专题
1.任务描述 输入:数组(二叉树层序遍历)、总和 输出:所有满足总和的路径 详细描述:首先给定一个层次遍历的结果,然后重建二叉树,最后根据指定总格通过深度优先遍历得到所有路径。(也可以加入分支限界) 2.根据层序遍历序列重建二叉树 这一部分主要利用了层序遍历的树形结构性质以及队列这一数据结构Node* get_tree(vector<int> vec) { int vec_si原创 2016-07-16 13:47:04 · 1946 阅读 · 0 评论