数据结构与算法
弹指间LDL
学习C++,嵌入式开发,图像处理,
展开
-
图的表示方法C++实现
图的表示最长用的两种方法是:1)、邻接矩阵表示法2)、邻接表表示下面是两种构造图的方法1)邻接矩阵:[cpp] view plaincopy#include #include using namespace std; //枚举类型,图的种类 DG:有向图;WDG:带权值转载 2015-12-01 10:00:59 · 849 阅读 · 0 评论 -
高效的字符串Hash公式
原文链接: http://www.cnblogs.com/duzouzhe/archive/2009/10/14/1583359.html 暴雪公司有个经典的字符串的hash公式 先提一个简单的问题,假如有一个庞大的字符串数组,然后给你一个单独的字符串,让你从这个数组中查找是否有这个字符串并找到它,你会怎么做? 有一个方法最简单,老老实实从头查到尾,一个一个比较,直到找到为止,我想只要学过程转载 2016-09-30 12:25:04 · 654 阅读 · 0 评论 -
统计二进制数中1的个数
容易想到,将数与1按位与,然后右移,每次都跟1相与统计1的个数,这种方法对于无符号数是可以的,但是对于有符号数而言,其右移后再高位空出部分会添加1,也就是说,该方法对于无符号数而言会陷入死循环。 方法一 由于左移是始终在空出的低位添加0的,那么不妨使用一个1来和待统计的二进制数进行按位与操作,然后将1进行二进制的左移操作,从低位到高位依次统计每个位置是否为1。int CountNumUseFla原创 2016-09-26 15:10:44 · 1051 阅读 · 0 评论 -
判断二叉搜索树是否为后序遍历序列
#include <iostream>using namespace std;//给定一个整数数组,判断是否是一个二叉搜索树的后序遍历结果bool JudgeBSTSequence(int* BinSeq,int length){ int* root = NULL; int* leftStart = NULL; int* rightStart = NULL; /原创 2016-09-26 11:55:44 · 475 阅读 · 0 评论 -
剑指offer46-累加和的特殊求法
题目描述:要求在不使用乘除法,for、while、if、else、switch、case以及条件判断语句(A?B:C)的情况下求累加和,通常求累加和的做法是通过公式,或者是递归,循环等方式#include <iostream>using namespace std;/*************方法一******************///利用循环的思路,循环即同一个函数重复执行多次,而在循环原创 2016-08-26 14:48:49 · 502 阅读 · 0 评论 -
剑指offer45-圆圈中剩下的最后一个数
//将0~n-1共n个数字排成一个圆圈,从数字0开始数数,每次从圆圈里删除第m个数字,计算出最后剩下的1个数字。 //分析:首先要注意,在进行数字处理的时候,要让着一串数字成环,而成环的方式是当计数到链表尾部的时候, //返回到头部继续计数。另外,如果是删除的是最后一个元素,那么在删除后,也应该从头开始计数 //#include <iostream>#include<list>using原创 2016-08-26 14:11:46 · 471 阅读 · 0 评论 -
剑指offer43-计算n个色子掷出各个点数和的概率
问题描述:把n个色子掷地上,所有朝上一面的和为S,求出所有可能的S的概率,分析可知,色子有6个面,其数是1~6,而总共有n个色子,那么其和的范围是n~6n,而总共可能出现的组合情况有6^n种。/**************方法一**************/ 通过每次确定一个色子的数字,确定n个色子出现的数字,然后根据其和,相应的次数+1,从第一个色子开始确定,逐个确定色子的数字,一个色子确定后,原创 2016-08-19 20:39:24 · 1475 阅读 · 0 评论 -
剑指offer44-扑克牌顺子判断
问题描述:随机抽出5张扑克牌,判断这5张牌是不是顺子(连续的),其中2~10表示数字本身,A为1,J为11,Q为12,K为13,大小王可以看成是任意数字。 分析:由于是随机抽取的几张牌,因此,需要先对牌进行排序。排序过后,由于大小王比较特殊,可以表示任意数字,假设用0来表示大小王,首先应该统计0的个数,遍历数组的时候,如果碰到对子(即非0而又相等数字,则可以直接判断为非顺子)。如果相邻两个数不是连原创 2016-08-19 21:46:20 · 361 阅读 · 0 评论 -
直方图内矩形面积
输入一组直方图数据,其中每列的宽度为1,求所给直方图包含的最各个高度的矩形面积。比如,对于直方图[2,7,9,4,1],它所包含的各个高度矩形的面积为8,14,9,12,5 给定一个直方图及它的总宽度返回相应面积。方法一: 方法一的思路是,从前完后遍历直方图,在相应的位置往前后搜索,遇到直方图高度更低的则停止,通过左右的界限来求其宽度。(方法一代码值考虑了值为0到9的情况)#include原创 2016-05-04 13:57:23 · 1412 阅读 · 0 评论 -
从前序+中序或者后序+中序序列中恢复二叉树过程
给出前序遍历和中序遍历,如何绘制出二叉树: 如果给出遍历产生的一串字符,不容易确定各个字符在树中的具体位置,因而需要两个遍历串相结合才能画出一棵二叉树。 如,给出前序遍历ADFGHKLPQRWZ,中序遍历GFHKDLAWRQPZ。 其具体寻找过程如下: 其中矩形内表示当前节点的左右子树的元素,圆圈内为当前节点,矩形内表示的是当前节点在该子树中下一个访问的节点。 首先在前序序列中找到第一个访原创 2016-04-26 11:18:14 · 5967 阅读 · 1 评论 -
几种常见简单排序算法
几种简单排序算法原创 2016-05-06 16:08:22 · 4549 阅读 · 0 评论