
数据结构和算法
金士顿
这个作者很懒,什么都没留下…
展开
-
怎么根据无向图画出邻接表
无向图的邻接表和数据结构中的链表类似,但是又有不同,在软件设计师考试中也曾经出现,今天就给大家讲一下怎么根据无向图来画邻接表工具/原料 无向图 方法/步骤 1 我们先画出一个无向图,需要注意的就是无向图是没有箭头的,千万不要把箭头画上,如下图所示 2 然后根据上图的点的范围,画出一个长条矩形框。不会或者不懂的可以参考下图 3 分析该顶...转载 2019-01-14 16:25:05 · 29450 阅读 · 10 评论 -
扑克牌顺子
https://www.cnblogs.com/remlostime/archive/2012/11/23/2784202.html 题目描述:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,...转载 2018-11-28 10:53:55 · 116 阅读 · 0 评论 -
给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]
2017年09月05日 09:28:18 冰镇-西瓜 阅读数:733更多个人分类: 剑指Offer 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/hhgggggg/article/details/77847528问:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*...转载 2018-11-30 16:29:07 · 968 阅读 · 0 评论 -
转 给定一数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j]
2014年11月17日 20:17:03 准备找工作的Ocean 阅读数:2276更多个人分类: 很好要多看掌握的 地址:http://blog.youkuaiyun.com/morewindows/article/details/8742666转载请标明出处,谢谢。欢迎关注微博:http://weibo.com/MoreWindows 之前参加2012年腾讯实习...转载 2018-11-30 16:27:23 · 247 阅读 · 0 评论 -
经典算法——左旋转字符串
个人分类: LeetCode C++ DataStructure&Algorithms 所属专栏: LeetCode算法分析版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/geekmanong/article/details/50913518 一、题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任...转载 2018-11-27 16:09:31 · 244 阅读 · 0 评论 -
strtok字符串分离
#include <iostream>#include <stdio.h>#include <string.h>using namespace std; int main() { char s[] = "my name is lmm"; char *p; const char *delim = " "; p = str...原创 2018-11-27 11:16:17 · 218 阅读 · 0 评论 -
和为S的连续正数序列
版权声明:私藏源代码是违反人性的罪恶行为!博客转载无需告知,学无止境。 https://blog.youkuaiyun.com/qq_41822235/article/details/82109081目录一、 解法一 二、 解法二 三、 解法三四、 解法四(换元法)五、 解法五要求计算出9~16的和,写出正确答案是100。究竟有多少种连续的正数序列的和为100(至少包括两...转载 2018-11-26 17:17:53 · 186 阅读 · 0 评论 -
找出带环单向链表的环入口(交点)
https://www.cnblogs.com/snake-hand/p/3148328.html其实这个问题已经被问烂了,但是之前没有想透,今天算是解决得差不多。找环的入口这个问题,其实是建立在另外一个问题之上的——判断单向链表是否有环土方法很多,但是比较好的目前就那么一个:一开始设置两个指针都指向表头,其中一个每次(一步)前进一个节点的叫p1,另外那个每次(一步)前进两个节点的叫p...转载 2018-12-04 10:27:30 · 499 阅读 · 1 评论 -
海量数据处理的 Top K算法(问题) 小顶堆实现
我实现的代码,下面是转载别人的void swap(int &n1, int &n2){ int temp = n1; n1 = n2; n2 = temp;}/* int i 起始下标 int N 从i开始的元素个数*/void ELementDown(int A[], int i, int N){ for(int index = 2 * i + 1...转载 2018-11-29 17:20:02 · 1094 阅读 · 2 评论 -
小堆排序算法练习
#define leftchild(i) (2 * i + 1)void swap(int &n1, int &n2){ int temp = n1; n1 = n2; n2 = temp;}/* int i 起始下标 int N 从i开始的元素个数*/void ELementDown(int A[], int i, int N...转载 2018-11-29 16:12:04 · 278 阅读 · 0 评论 -
完全二叉树的最后一个非终端节点的下标
今天突然想通了一件事,完全二叉树的最后一个非终端节点的下标为(n-2)/2,若一根完全二叉树有n个节点,则n-1为最后一个叶子节点的下标,而完全二叉树中一个节点的父亲节点的下标为此节点下标减去1再除2.于是二叉树的最后一个非终端节点的下标就为(n-2)/2...转载 2018-11-29 14:23:43 · 2482 阅读 · 1 评论 -
C语言中位运算符异或“∧”的作用
0∧0=0 1∧0=1 与0异或值不变0∧1=1,1∧1=0 与1异或值取反异或运算符∧也称XOR运算符。它的规则是若参加运算的两个二进位同号,则结果为0(假);异号则为1(真)。即0∧0=0,0∧1=1,1∧1=0。如: 即071∧052,结果为023(八进制数)。“异或”的意思是判断两个相应的位值是否为“异”,为“异”(值不同)就取真(1),否则为(0)。 下面举例说明∧运...转载 2018-11-26 10:43:23 · 4449 阅读 · 0 评论 -
约瑟夫环
约瑟夫环2018年03月08日 11:32:46 xcrazyu 阅读数:133更多个人分类: CCF题解 转自 http://blog.youkuaiyun.com/yanweibujian/article/details/50876631 侵删。 约瑟夫游戏的大意:30个游客同乘一条船,因为严重超载, 加上风浪大作,危险万分。因此船长告诉乘客,只有将全船 一半的旅客投入海中,其余...转载 2018-11-28 13:13:14 · 180 阅读 · 0 评论 -
请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式
如果模式串遇到*字符则有两种状态,第一匹配字符,则字符串后移一位,模式串不变,第二,模式串后移俩位和字符串后移一位,第三,忽略星号。 /*请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配...转载 2018-12-03 14:15:38 · 1515 阅读 · 0 评论 -
【数据结构】堆结构小根堆,大根堆,插入,删除等操作的实现
https://blog.youkuaiyun.com/sofia_m/article/details/79117088实现代码:#include<iostream>#include<vector>#include<iostream>#include<stdio.h>using namespace std;using namespace ...原创 2018-12-11 17:02:18 · 1229 阅读 · 0 评论 -
快速排序
https://baike.baidu.com/item/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95/369842?fromtitle=%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F&fromid=2084344&fr=aladdin #include <iostream>...转载 2018-12-21 15:08:11 · 276 阅读 · 0 评论 -
归并排序
class MergeSort {public: void sort(int arr[], int length) { int *temp = new int[length];//在排序前,先建好一个长度等于原数组长度的临时数组,避免递归中频繁开辟空间 sort(arr, 0, length-1, temp); } ...转载 2018-12-21 10:57:13 · 213 阅读 · 0 评论 -
二叉搜索树 (BST) 的创建以及遍历
https://www.cnblogs.com/yaolin1228/p/7820515.html二叉搜索树(Binary Search Tree) : 属于二叉树,其中每个节点都含有一个可以比较的键(如需要可以在键上关联值), 且每个节点的键都大于其左子树中的任意节点而小于右子树的任意节点的键。1、BST 的总体结构:主要的几种变量以及方法如上图所示,主要有插入、排序、删除...转载 2018-12-10 13:12:19 · 726 阅读 · 0 评论 -
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。
题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字...转载 2018-12-13 16:22:12 · 781 阅读 · 0 评论 -
三种基础排序算法(选择排序、插入排序、冒泡排序)
注: 图片转自点击打开链接 以下均使用升序介绍。选择排序:从数组中找到最小的元素,和第一个位置的元素互换。 从第二个位置开始,找到最小的元素,和第二个位置的元素互换。 ........ 直到选出array.length-1个较小元素,剩下的最大的元素自动排在最后一位。 代码实现: public class Selection { ...转载 2018-12-19 13:54:44 · 199 阅读 · 0 评论 -
判断一颗二叉树是否对称
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/u012311410/article/details/711084751.题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的.二叉树结构:struct TreeNode { int val; str...转载 2018-12-06 11:08:09 · 4201 阅读 · 0 评论 -
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
链接:https://www.nowcoder.com/questionTerminal/9023a0c988684a53960365b889ceaf5e来源:牛客网 思路:首先知道中序遍历的规则是:左根右,然后作图 1 2 3 4 5 6 7 8 9 10 11 12 13 ...转载 2018-12-06 10:21:21 · 574 阅读 · 0 评论 -
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.
/*题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。思路:需要满足一下规则(正则表达式,直接用理解转载 2018-12-03 16:17:57 · 683 阅读 · 0 评论 -
二叉树的序列化和反序列化(C++)
本题考点:http://blog.youkuaiyun.com/weiwei22844/article/details/42004983leetcode题目地址297. Serialize and Deserialize Binary Treehttps://leetcode.com/problems/serialize-and-deserialize-binary-tree/层次遍历,...转载 2018-12-08 16:03:57 · 2375 阅读 · 0 评论 -
二叉树的深度 (递归与非递归方法整理)
我们可以从另一个角度来理解树的深度: 如果一棵树只有一个结点,那么它的深度为1; 如果根结点只有左子树没有右子树,那么树的深度是左子树的深度加1,加1是加上根节点这一层 如果既有左子树又有右子树,那么树的深度应该是左、右子树中深度较大的值再加1 code 如下:struct TreeNode { int val; struct Tre...转载 2018-11-23 15:15:59 · 5530 阅读 · 0 评论 -
What’s a Hash Table? Why we need a Hash Table?
What’s a Hash Table? Why we need a Hash Table?By Using a Hash Table we can find element very quickly. For example, There are 20 random number in an array below. It’s not a sorted array, So We ...转载 2018-11-20 14:02:15 · 281 阅读 · 0 评论 -
题目:输入两个链表,找出它们的第一个公共结点。 单元测试
链表结点定义如下,这里使用C#语言描述: public class Node { public int key; public Node nextNode; public Node(int key) { this.key = key; } }...转载 2018-11-23 09:50:35 · 7292 阅读 · 0 评论 -
幂的乘方
幂的乘方(a^m)^n=a^(mn),与积的乘方(ab)^n=a^nb^n转载 2018-11-02 14:10:49 · 380 阅读 · 0 评论 -
有符号右移>>,无符号右移>>>
计算机表示数字正负不是用+ -加减号来表示,而是用最高位数字来表示,0表示正,1表示负1.有符号右移>>(若正数,高位补0,负数,高位补1)正数:例如4>>2首先写出4的二进制数,因为是正数所以最高位为0,也就是第一个0000 0000 0000 0000 0000 0000 0000 0100右移两位得到(高位补0)000000 0000 0000...转载 2018-11-02 10:15:09 · 400 阅读 · 0 评论 -
负数在计算机中怎样存储
一、什么是原码、反码、补码?分为:正数 和负数(包括正浮点数,和负浮点数)规定最高位位符号位正数为0,负数为1(原因下文解释)原码:10进制转换成2进制是原码,只不过正数的原码是本身符号位为0,负数的原码符号位为1(以下篇幅均以单字节为例:10进制1的原码是0000 0001,10进制-1的原码是1000 0001)。反码: 正数的反码是本身,负数的反码是负数的原码0变为1,1变为...转载 2018-11-02 09:31:44 · 1672 阅读 · 5 评论 -
原码、反码、补码
在实现这道题之前,我们先来了解下原码、反码、补码。一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.比如8位二进制1,-1的原码如下[+1]原 = 0000 0001[-1]原 = 1000 0001第一位是符号位. 因为第一位...转载 2018-11-02 09:02:23 · 383 阅读 · 0 评论 -
判断一个序列是否是二叉搜索树的后序遍历,C++实现
https://www.cnblogs.com/wanglei5205/p/8684408.html原创文章,转载请注明出处!本题牛客网地址博客文章索引地址博客文章中代码的github地址1.题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 举例:序列{5...转载 2018-11-09 15:09:53 · 370 阅读 · 0 评论 -
二叉搜索树
二叉搜索树:是一颗二叉树,可能为空;一颗非空的二叉搜索树满足以下特征:1.每个元素有一个关键字,并且任意两个元素的关键字都不同;因此所有的关键字都是唯一的。2.在根节点的左子树中,元素的关键字(如果有的话)都小于根节点的关键字。3.在根节点的右子树中,元素的关键字(如果有的话)都大于根节点的关键字。4.根节点的左右子树也是二叉搜索树。有重复值的二叉搜索树:去除二叉搜索树中每个元素都必须...转载 2018-11-09 10:32:20 · 1133 阅读 · 1 评论 -
全面分析再动手的习惯:链表的反转问题(递归和非递归方式)
https://www.cnblogs.com/kubixuesheng/p/4394509.htmldashuai的博客要么牛B!要么滚! 首页 联系 订阅 管理随笔-88 文章-0 评论-167 全面分析再动手的习惯:链表的反转问题(递归和非递归方式)讨论QQ群:待定定义一个方法(函数),实现输入一个链表的头结点,然后可以反转这个链表的方向,并输出...转载 2018-11-06 08:54:36 · 158 阅读 · 0 评论 -
满二叉树各种节点数目的计算
1. 二叉树的基本性质二叉树的第i层至多有2i-1个结点(i>=1)证明:(归纳法) 归纳基:i=1时,只有一个结点,2i-1=20=1; 归纳假设:假设对所有的i命题成立; 归纳证明:二叉树中每个结点最多有两个子树,则第i+1层的结点数为2*2i-2=2i-1.深度为h的二叉树至多有2h-1个结点(h>=1) 证明:n=20+21+...+2...转载 2018-08-07 19:41:17 · 20781 阅读 · 1 评论 -
索引 ----- 二叉树、平衡二叉树、b-tree、b+tree详解
本文是转载+自我梳理主要讲的是索引中使用树这种数据结构是怎么存储的。以及从二叉树开始的4种树的应用。我个人认为参考价值最大的就是b+tree和b-tree都是具体怎么存数据的(相当于优化部分) B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来...转载 2018-08-14 19:07:04 · 619 阅读 · 0 评论 -
二叉树的一些性质
转载 skywang12345 http://www.cnblogs.com/skywang12345/p/3576328.html树的介绍1. 树的定义树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:(01) 每个节点有零个或多个子节点;(02)...转载 2018-08-14 16:05:27 · 198 阅读 · 0 评论 -
【算法基础】字符串的全排列算法
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。这道题是剑指offfer中一道经典的题,如果有n个元素,我们就能有n*(n - 1)个全排列,n为1时,只有一个全排列举个...转载 2018-11-13 09:14:31 · 614 阅读 · 0 评论 -
浅谈堆排序
https://www.jianshu.com/p/938789fde325 堆排序可以做什么首先应该弄清楚堆排序可以解决什么问题,答案是显而易见的:排序。说得通俗点儿就是对一组无序的数字进行调整,使其按照从大到小或者从小大到的顺序有序排列。我们习惯性的采用数组这一数据结构来记录一系列有序或者无序的数据。故我们可以借助堆排序这种方法,将以下无序数组:调整为有序数组:以下讲解的...转载 2018-11-13 14:09:03 · 1026 阅读 · 0 评论 -
丑数---只包含因子2、3和5的数
https://www.cnblogs.com/maleyang/articles/7495067.html 1 丑数---只包含因子2、3和5的数(根据已知求到结果,再把这个结果当成已知,求下一个结果) 2 //丑数 3 //把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从...转载 2018-11-20 11:12:13 · 1002 阅读 · 0 评论