自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++大顶堆和小顶堆

C++大顶堆和小顶堆原理大顶堆小顶堆大顶堆和小顶堆对比图大顶堆和小顶堆的实现代码原理  堆数据结构是一种数组对象,它可以被视为一颗完全二叉树结构(或者也有可能是满二叉树)大顶堆  根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称为大顶堆。大根堆要求根节点的关键字既大于或等于左子树的关键字值,又大于或等于右子树的关键字值。小顶堆  根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最小者,称为小顶堆。小根堆要求根节点的关键字既小于或等于左子树的关键字值,又小于或等于右子树的关键字值。

2020-11-24 09:04:59 8561 1

原创 C++DFS与BFS实现

C++DFS与BFS实现DFSBFS  BFS使用一个queue实现,每次循环对当前点临近的点,都推进队列中,然后就能根据队列来依次访问临近的点,直到队列中没有点为止。  DFS利用一个stack,首先把start推进stack里面,然后循环每次找到当前stack top的临近的未访问的点,访问后,推进stack里面,以便下次循环进行深度搜索。  以下使用图的遍历算法来举例说明。DFSBFS广度优先搜索在进一步遍历图中顶点之前,先访问当前顶点的所有邻接结点。a .首先选择一个顶点作为起始结点,

2020-11-22 20:08:57 4119 5

原创 C++哈希法运用

C++哈希法运用题目描述hash法解题思路代码题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。hash法解题思路主要思想是把每个数放在对应的位置上,即num[i]=inum[i] = inum[i]=i。步骤:首先检查数据是否异常然后遍历一遍,判断条件为当数字不在对应的

2020-11-19 19:26:27 406

原创 C++双指针法

C++双指针法目的实例题目描述解题思路代码目的使用双指针思路可以大大降低算法时间复杂度。实例题目描述求一个有序数组中和=8的下标。解题思路设置两个不同的指针 ,或者头,或者尾。在一个递增的序列中,根据结果分类,判断指针的下一步应该怎么移动。结果分类:a[i]+b[j]==8则i++,j- -都相互靠近;a[i]+b[j] < 8 ,需要移动指针i ,i++(i与a[i]成正比,增加i即可使结果靠近8);a[i]+b[j] > 8 ,需要移动指针j ,j- -(减少j使结果靠

2020-11-19 18:57:28 1444

原创 C++滑动窗口算法理解与实例

C++滑动窗口算法目的实例实例1题目描述解题思路代码实例2题目描述解题思路代码总结目的如何将嵌套for循环在少数问题中转换为单个for循环,从而减少了时间的复杂性。实例实例1题目描述给一组大小为n的整数数组,计算长度为k的子数组的最大值。Input : arr[] = {100, 200, 300, 400} k = 2Output : 700Input : arr[] = {1, 4, 2, 10, 23, 3, 1, 0, 20} k = 4

2020-11-19 18:28:52 2274

原创 C++快慢指针理解与应用

C++快慢指针理解与应用原理应用有序链表中寻找中位数判断链表是否存在环,如果存在,找到环入口判断两个单链表是否相交,如果相交找到他们的第一个公共节点原理快慢指针中的快慢指的是移动的步长,即每次向前移动的快慢,例如每次可以让快指针沿链表向前移动2,慢指针向前移动1次。应用有序链表中寻找中位数  快指针移动的速度是慢指针移动速度的两倍,因此当快指针到达链表尾部的时候,慢指针刚好到达中点。  程序还要考虑链表节点个数的奇偶数因数,当快指针移动x次后到链表尾1+2x1+2x1+2x,说明链表有奇数个节点

2020-11-19 11:20:15 835 1

转载 “in-place”算法操作理解

“in-place”算法操作理解转自:https://blog.csdn.net/u011489043/article/details/70197020

2020-11-19 10:37:34 1679

原创 C++ 快速幂取模运算理解

C++ 快速幂取模运算理解概念非递归方法原理代码实例递归方法原理代码实例概念快速幂运算也叫反复平方法。顾名思义,算法就蕴含在名字中。非递归方法原理  假设要求x2x^2x2,如果n=2kn = 2^kn=2k,那么原题可以很轻松的表示为:xn=((x2)2)2…x^n = ((x^2)^2)^2…xn=((x2)2)2…。这样只要做kkk次平方运算就能解决,时间复杂度就从O(n)O(n)O(n)下降到log(n)log(n)log(n)。  由上面的分析可知,只要幂运算的幂可以写成2k2^k2k

2020-11-19 09:57:39 928

原创 C/C++位运算详解及用途

二叉树相关操作运算符含义描述用途&按位与|按位或^异或~取反<<左移运算符>>右移运算符C/C++位运算详解及相关作用。运算符含义描述运算符含义描述& 按位与如果两个相应的二进制位都为1,则该位的结果值为1,否则为0I 按位或两个相应的二进制位中只要有一个为1,该位的结果值为1^ 按位异或如果参加运算的两个二进制位值相同则为0,否则为1~ 取反~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0&l

2020-11-18 22:02:57 1566

原创 C++二叉树相关操作

二叉树相关操作二叉树的基本结构前序遍历C++实现二叉树的相关操作,包括递归和非递归方式。二叉树的基本结构struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(nullptr), right(nullptr) { }};前序遍历遍历顺序:根左右。递归方式/*** @description 前序遍历(递归)* @param

2020-11-13 21:51:25 120

原创 VS常见问题原因与解决

VS常见问题原因与解决问题1:error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MT_StaticRelease”(lib_json.lib)问题2:VS2015中Debug版本正常运行,Release版本闪退无法将参数 1 从“void (__cdecl &)(std::promise &,int)”转换为“std::allocator_arg_t。问题1:error LNK2038: 检测到“Runtime

2020-11-13 20:25:41 874

原创 QT发布工具inno问题记录

QT发布工具inno问题记录inno编译问题:disk spanning must be enabled in order to create an installation larger than 2100000000bytes in sizeinno编译问题:disk spanning must be enabled in order to create an installation larger than 2100000000bytes in size解决:[setup]diskspanni

2020-11-13 20:00:55 404

原创 live555调用boost1.58库的时候,出现编译错误

live555调用boost1.58库的时候,出现编译错误场景说明:  live555调用boost1.58库的时候,出现如下的编译错误:“BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT”: 宏重定义参见“BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT”的前一个定义error C3861: “GetAcceptExSockaddrs”: 找不到标识符error C2065: “SO_UPDATE_ACCEPT_CONTEXT”: 未声明的标识符err

2020-11-13 19:56:14 314 2

原创 QT常见问题原因与解决

QT常见问题问题1:LINK : fatal error LNK1181: 无法打开输入文件“debug\main.obj”问题2:WinSock2.h以及ws2def.h大量重复定义报错问题3:Qt中如何链接Ws2_32.libQT常见问题解决方法。问题1:LINK : fatal error LNK1181: 无法打开输入文件“debug\main.obj”原因:项目的路径(任何文件夹的名称)包含空格。问题2:WinSock2.h以及ws2def.h大量重复定义报错解决:在预处理器定义中添加W

2020-11-13 19:52:45 1294 1

原创 C++单链表相关操作

C++ 单链表基本操作实现链表简介类结构要素基本操作创建头结点从头插入一个新的节点删除指定节点修改指定节点指定节点值后插入节点查找指定节点值得前驱节点进阶操作反转反向遍历冒泡排序链表简介链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,链表比较方便插入和删除操作。类结

2020-11-13 19:15:26 191

原创 C++递归算法理解及典型问题举例

C++递归算法理解递归与循环的关系递归的内涵递归与循环经典递归问题实战寻找左侧边界的二分搜索:寻找右侧边界的二分查找:差值查找:本文剖析了递归的思想内涵,分析了递归与循环的联系与区别,给出了递归的应用场景和一些典型应用,并利用递归和非递归的方式解决了包括阶乘、斐波那契数列、汉诺塔、杨辉三角的存取、字符串回文判断、字符串全排列、二分查找、树的深度求解在内的八个经典问题。递归与循环的关系比喻递归:你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门,

2020-11-12 20:59:24 3121

原创 二分查找法解析

二分查找法框架:基本的二分搜索(寻找一个数):寻找左侧边界的二分搜索:寻找右侧边界的二分查找:二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。要求:必须采用顺序存储结构,而且表中元素按关键字有序排列。框架:int binarySearch(int[] nums, int target) { int left = 0, right = ...; while(...) { int mid = left + (right - left) /

2020-11-09 22:06:58 231 1

空空如也

空空如也

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

TA关注的人

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