算法
freshZero_
这个作者很懒,什么都没留下…
展开
-
处理二进制
题目描述世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?答案class Solution {public: /** * 获得两个整形二进制表达位数不同的数量 * * @param m 整数m * @param n 整数n * @return 整型 */原创 2017-03-08 14:43:30 · 278 阅读 · 0 评论 -
字符串反转方法
方法一使用STL标准库函数reverse();template<class BidirectionalIterator> void reverse( BidirectionalIterator _First, BidirectionalIterator _Last );_First 在元素交换的范围,双向迭代器指向第一个元素的位置_Last 在元素交换原创 2017-03-24 22:26:33 · 371 阅读 · 0 评论 -
并查集
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点转载 2017-03-13 21:39:14 · 161 阅读 · 0 评论 -
图算法(待写)
图的最小生成树Prim算法Kruskal算法有向无环图拓扑排序(AOV-网,Activity On Edge)关键路径(AOV-网,Activity On Vertex)有向图的最短路径Dijkstra算法Floyd算法原创 2017-03-30 17:49:51 · 325 阅读 · 0 评论 -
图
图的表示有两种方法:邻接表和邻接矩阵,下面分别是无向图和有向图的两种表示方法,均来自算法导论 图的遍历分为广度优先遍历和深度优先遍历下面分别就两种方法给出伪代码和c++代码,其中图的存储使用邻接矩阵存储。广度优先遍历伪代码 C++代码#include <iostream>#include <queue>using namespace std;#define N 6 queue<i原创 2017-03-14 15:07:47 · 229 阅读 · 0 评论 -
各种树(待写)
二叉搜索树二叉平衡树B树、B+树红黑树败者树堆与堆排序原创 2017-03-30 17:26:45 · 259 阅读 · 0 评论 -
递归
递归深入理解递归最重要的一点就是假设子问题已经解决了,现在要基于已经解决的子问题来解决当前问题。 递归之所以把问题变简单了,是因为相当于多给你了一个前提条件(尽管是假设的)。大家都知道,递归的本质和栈数据的存取很相似了,都是先进去,但是往往最后处理!再者对于递归函数的局部变量的存储是按照栈的方式去存的,对于每一层的递归函数在栈中都保存了本层函数的局部变量,一边该层递归函数结束时能够保存原来该层的数转载 2017-03-13 19:54:11 · 426 阅读 · 0 评论 -
二叉树
遍历方法二叉树的结构struct BintreeNode{ int data; BiTreeNode* lchild; BiTreeNode* rchild;}递归遍历先序遍历int PreOrderTraverse(BintreeNode){ if(T == NULL)return 0; Visit(T->data); PreOrderTr原创 2017-03-13 16:20:56 · 216 阅读 · 0 评论 -
catalan数 出栈序列
1.饭后,姐姐洗碗,妹妹把姐姐洗过的碗一个一个地放进碗橱摞成一摞。一共有n个不同的碗,洗前也是摞成一摞的,也许因为小妹贪玩而使碗拿进碗橱不及时,姐姐则把洗过的碗摞在旁边,问:小妹摞起的碗有多少种可能的方式?2.给定n个数,有多少种出栈序列?3.一个有n个1和n个-1组成的字串,且前k个数的和均不小于0,那这种字串的总数为多少? 这三个问题具有相同的结构,三个问题是可转载 2017-03-12 21:50:32 · 4587 阅读 · 0 评论 -
素数及其使用
素数质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。计算n以内的所有素数的方法ref:http://www.cnblogs.com/hardsoftware/p/5935850.html ★题目 好,言归正传。下面俺就由浅入深,从各种角度来剖析这道题目的奥妙。 为了避免被人指责为”玩文字游戏”(有些同学自己审题原创 2017-03-19 20:12:36 · 1925 阅读 · 0 评论 -
数字字符串问题
大数相乘题目描述:输入两个很大的正数(用c字符串表示),输出他们的乘积。 采用的方法可以模拟手工乘法关键步骤void multiply(const char *a,const char *b){ if (a == NULL&&b == NULL)return; int i, j, ca, cb, *s; ca = strlen(a); cb = strlen(b);原创 2017-03-18 23:02:11 · 354 阅读 · 0 评论 -
求数组的子数组之和的最大值
1.问题描述一个有N个整数元素的一维数组( A[0], A[1], … , A[n-2], A[n-1]),子数组之和的最大值是什么?(要求子数组的元素是连续的)在这里要注意,是数组的子数组而不是集合的子集例子:有数组( -2, 5, 3, -6, 4, -8, 6),则其子数组之和的最大值为8,其对应的数组为(5,3)2.分析与解法解法一:采用直接法,记Sum[i…j],为数组A中从第i到第j之间转载 2017-02-27 15:29:28 · 1699 阅读 · 0 评论 -
Lucky String
题目题目描述 A string s is LUCKY if and only if the number of different characters in s is a fibonacci number. Given a string consisting of only lower case letters , output all its lucky non-empty substring原创 2017-03-09 17:04:02 · 448 阅读 · 0 评论 -
KMP算法
KMP算法理解设模式串为pattern[0,1,2…p-1]核心思想找到模式子串pattern[0,1,2…k-1]的真后缀同时也是pattern[0,1,2…p-1]的最大前缀的长度(pattern的总长度是p,0<=k<=p),存入pi数组。利用pi数组来避免模式串和主串的不必要的比较,提高效率 KMP算法C++代码#include <iostream>#include <string>原创 2017-03-18 20:40:34 · 230 阅读 · 0 评论 -
STL底层原理简介
sortSTL的sort()算法,数据量大时采用Quick Sort,分段递归排序。一旦分段后的数据量小于某个阈值,为避免Quick Sort的递归调用带来过大的额外开销,就改用Insertion Sort(插入排序)。如果递归层次过深,也就是说数据量过大,比如说有10亿个数,还会改用Heap Sort。vector底层数据结构为数组 ,变长,支持快速随机访问array底层数据结构为数组,定长,支持原创 2017-09-07 14:08:46 · 1281 阅读 · 0 评论