自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 哈希表

哈希表(Hash table 也叫散列表),是根据关键字值(key)直接访问的数据结构,它通过把关键字值映射到表的一个位置(数组下标)来直接访问,以加快查找关键字值的速度。这个映射函数叫做哈希(散列)函数,存放记录的数组叫做哈希(散列)表。给定表M,存在函数 f(key) ,对任意的关键字值 key ,代入函数后若能得到包含该关键字的表中地址,称表M为哈希表,函数 f(key) 为哈希函数...

2020-03-28 17:35:46 342

原创 图的深度优先遍历和广度优先遍历(C++实现)

深度优先遍历理解从图中某个顶点V出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发,深度优先搜索遍历图,直至图中所有和 V有路径相通且未被访问的的顶点都被访问到。若此时尚有其他顶点未被访问到,则另选一个未被访问的顶点做起始点,重复上述过程,直至图中所有的顶点都被访问到。代码实现(邻接表)#include <iostream>#include <vecto...

2020-03-14 22:29:25 6130

原创 排序算法之基数排序

基数排序基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog®m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法...

2020-02-23 13:27:17 186

原创 二叉查找(排序,搜索)树的插入与查询

二叉查找树(Binary Search Tree), 又称二叉排序树,亦称二叉搜索树。它是一颗具有下列性质的二叉树:若左子树不空, 则左子树上所有结点的值均小于或等于它的根结点的值;若右子树不空, 则右子树上所有结点的值均大于或等于它的根结点的值;左、 右子树也分别为二叉排序树。等于的情况只能出现在左子树或右子树中的某一侧。中序遍历二叉查找树之后,各元素呈现有序(升序)。struc...

2020-02-22 21:26:48 249

原创 二分查找算法的递归与非递归实现(C++)

二分查找又称折半查找, 首先, 假设表中元素是按升序排列, 将表中间位置的关键字与查找关键字比较:如果两者相等, 则查找成功;否则利用中间位置将表分成前、 后两个子表:如果中间位置的关键字大于查找关键字, 则进一步查找前一子表否则进一步查找后一子表重复以上过程, 直到找到满足条件的记录, 使查找成功, 或直到子表不存在为止, 此时查找不成功。二分查找算法的递归实现//...

2020-02-22 16:57:13 418

原创 二叉树的层次遍历(宽度优先)(C++)

二叉树层次遍历二叉树层次遍历,又称为宽度优先搜索,按照树的层次依次访问树的结点。层次遍历使用队列对遍历结点进行存储,先进入队列的结点,优先遍历拓展其左孩子与右孩子。1/ 2 5...

2020-02-22 16:24:05 542

原创 C++中的深拷贝与浅拷贝问题

浅拷贝问题当用一个类对象去初始化这个类的另一个对象时,如果这个类没有提供拷贝构造函数以及重载=运算符,这时就会发生浅拷贝。如下代码所示class Name{public: Name(const char *pname) { this->size=strlen(pname); this->pName=(char *)malloc(size+1); ...

2020-02-18 21:27:17 398

原创 获取无重复元素序列的所有子集(C++):leetcode:78

子集问题题目描述:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [ ] ]位运算法预备知识运算符含义举例十进制形式&a...

2020-02-17 23:15:06 792

原创 寻找数组的中位数(C++)leetcode:295

寻找数组的中位数中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3,4,5] 的中位数是 (3+4)/2=3.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。示例:a...

2020-02-14 21:29:58 876

原创 字符串的表达式的算术运算(C++) LeetCode:224

224:基本计算器题目描述实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。示例一:输入: "1 + 1"输出: 2示例二:输入: " 2-1 + 2 "输出: 3示例三:输入: "(1+(4+5+2)-3)+(6+8)"输出: 23说明:你可以假设所给定的表达式都是有效的。...

2020-02-14 14:41:28 2772

原创 判断出栈序列是否合法(POJ 1363 Rails)(C++代码实现)

栈与队列相关题目- 若已知从1到n的数字序列按循序入栈,每个数字入栈后即可出栈,也可在栈中停留,等待后面的数字入栈出栈后,该数字再出栈,求该数字序列的出栈序列是否合法?思路队列与栈的搭配使用将出栈序列压入队列 order 中根据队列的大小n ,将元素从1 到 n 压入栈S中每将一个元素压入栈,都要检查一下栈顶元素是否与队列的首元素相等,如果相等,则同时将栈顶元素与队首元素弹出...

2020-02-13 22:34:20 518

原创 求两个链表的交点(C++)

方法一:利用C++的set容器求交集思路将链表A的元素放入到set集合中遍历链表B,如果链表B的某个结点在set集合中,返回该节点代码实现struct ListNode{ int val; ListNode* next; ListNode(int x) :val(x), next(NULL) {}};class Solution1//用set容器求解{public...

2020-02-12 14:31:15 562

原创 整个链表的逆序实现及部分链表的逆序实现(C++)

链表逆序思路1. 传入一个链表的头节点2. 生成一个新的空结点(pNew),后续作为链表的结点备份3. 用一个指针(pNext)指向当前头节点的下一个节点,作为记录保存4. 把头节点的下一个节点指向新结点(pNew)5. 将pNew更新为当前头节点的指针6. 将头节点更新为pNext7. 重复3 4 5 6过程,直到头节点指针指向空8. 此时新结点pNew的指针即为链表逆序翻转...

2020-02-11 16:46:32 240

原创 栈的应用之括号匹配问题

括号匹配当需要检测成对出现但又互不相邻的事物时可以使用栈“后进先出”的特性栈非常适合于需要“就近匹配”的场合- 思路从第一个字符开始扫描当遇见普通字符时忽略当遇见左符号时压入栈中当遇见右符号时从栈中弹出栈顶符号,并进行匹配匹配成功:继续读入下一个字符匹配失败:立即停止,并报错结束:成功: 所有字符扫描完毕,且栈为空失败:匹配失败或所有字符扫描完毕但栈非空代码实现bo...

2020-02-11 00:52:20 182

原创 拷贝二叉树

拷贝二叉树拷贝二叉树通过一颗二叉树的根节点而复制当前二叉树。思路1.先访问,左子数存在时复制左子树结点2.再访问右子树,右子树存在时复制右子树结点3.最后拷贝根节点递归实现代码实现typedef struct BINARYNODE{ char ch; struct BINARYNODE* lchild; struct BINARYNODE* rchild;}Bin...

2020-02-10 18:11:58 1339

原创 求二叉树的叶子节点数目

二叉树的叶子节点数目思路1.设定一个辅助计数变量作为叶子数目2.分别递归访问左右子树,当结点的左右子树都为空时,计数变量加13.得到计数变量的值即为叶子数目代码实现typedef struct BINARYNODE{ char ch; struct BINARYNODE* lchild; struct BINARYNODE* rchild;}BinaryNode;/*@pa...

2020-02-10 17:58:33 468

原创 二叉树的高度

二叉树的高度思路分别计算左子树和右子树的高度二叉树的最终高度为两个子树高度的最大值递归实现代码实现//二叉树结点typedef struct BINARYNODE{ char ch; struct BINARYNODE* lchild; struct BINARYNODE* rchild;}BinaryNode;//求二叉树的高度int CaculateTreeD...

2020-02-10 17:29:02 554

原创 排序算法之冒泡排序

冒泡排序冒泡排序改良版代码实现void BubbleSort(int* arr, int len){ bool flag=false; for(int i=0;i<len&&!flag;i++) { flag=true; for(int j=0;j<len-i;j++) { if(arr[j+1]<arr[j]) ...

2020-02-10 16:57:37 131

原创 排序算法之选择排序

选择排序思路升序排列给定一无序数组,将数组第一个元素的下标设为i,第二个元素的下标设为j。从数组第二个元素开始往后遍历,遍历过程中逐一与数组第一个元素进行比较,若找到比第一个元素小的元素,则将该元素下标记录,并将该元素索引处的值换为下个与j索引值比较的目标,,一次循环后找到最小值的索引下标。将最小值的索引所的值与第一个元素交换。重复上述循环具体排序过程如图所示:代码实现...

2020-02-10 16:49:57 134

原创 排序算法之插入排序与希尔排序

插入排序插入排序的核心思想为:将无序序列插入到有序序列之中思路1.给定一个数组,默认将数组的第一个元素作为有序数组,将其他元素作为无序数组,并将无序数组的第一个元素用临时变量保存下来2.从数组的第二个的元素(即 无序数组的第一个元素 )开始遍历,循环的与有序数组进行比较,根据大小插入到有序数组的相关位置举例:给定无序数组 [ 4 3 6 2 1 9 8 7 ]相关过程如图所示:代...

2020-02-10 16:01:53 123

原创 排序算法之归并排序(C++)

归并排序归并排序核心思想:将两个有序序列合并成一个有序序列整体排序思路取无序序列的中间数,将一个无序序列分成左右两个数组对左右两侧的数组分别重复1过程,直到分离成一个个的有序数组,即分离成单个数,如图所示对其分离的有序数组分别进行合并(一个数的数组默认为有序数组),最终合并成一个有序序列,如下图所示将两个有序序列合并成一个有序序列的合并算法分析上述过程中的核心在于如何将两个有...

2020-02-10 11:46:03 264

原创 排序算法之快速排序(C++)

快速排序快速排序:以一个元素为准,将序列分成左小右大,然后递归在序列完全无序的情况下效率最高思路举例:对序列 **[5 4 7 9 8 2 6 1 3]**进行快速排序选取第一个数为参考数,并将第一个数存放在临时变量里将比参考数大的放在参考数的右边,比参考数小的放在参考数的左边然后对参考数的左右两侧的数分别进行递归代码实现void QuickSort(int* arr,in...

2020-02-09 23:27:56 158

原创 排序算法之堆排序(C++)

堆排序堆排序: 通过将数组的元素转化成完全二叉树,并将完全二叉树转化为大顶堆(升序)或者小顶堆(降序),通过循环逐次获取最大值或最小值达到排序的目的。思路· 升序为例(大顶堆)将数组转化成完全二叉树,其中最后一个非叶子节点的下标为 (数组长度/2-1),任意节点(非叶子节点)的左子树为2*i+1,右子树为2*i+2(i为数组下标)。从最后一个非叶子节点往前遍历,将每个子树调整为大顶堆,...

2020-02-09 21:46:53 210

原创 根据前序序列和中序序列构建二叉树(C++)

根据前序序列和中序序列构建二叉树如何才能确定一棵树?通过中序序列和先序序列可以确定一棵树通过中序序列和后序序列可以确定一棵树通过先序序列和后序序列则确定不了一棵树!!!So,只要有中序序列,其他序列任意一个都可确定一棵树通过中序序列和先序序列确定一颗二叉树给定先序序列 preorder [1 2 4 5 8 3 6 7]给定中序序列 inorder [4 2 8 5 1 6...

2020-02-09 16:50:45 2777 1

原创 二叉树的递归遍历和非递归遍历实现(C++)(深度优先)

二叉树的递归遍历和非递归遍历(C++)二叉树的遍历方式可分为先序遍历,中序遍历和后序遍历先序遍历:先遍历根节点,再遍历左子节点,最后遍历右子节点。中序遍历:先遍历左子节点,再遍历根节点,最后遍历右子节点。后序遍历:先遍历左子节点,再遍历右子节点,最后遍历根节点。区分二叉树的遍历方式的快捷方法:看根节点在遍历顺序的前面,中间或者后面:根左右(先序),左根右(中序),左右根(...

2020-02-09 15:54:26 1034 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除