
数据/算法
YYtengjian
学习笔记而已~
展开
-
【数据结构】 C++迷宫
(C++)、其实走迷宫可以不带线团,你按下面的三条规则去走,就能够走得进,也能够走得出!原创 2017-11-17 22:37:31 · 1419 阅读 · 1 评论 -
【STL】 set、map详解
前面已经为大家总结了有关vector,list等的用法(https://blog.youkuaiyun.com/yaotengjian/article/details/81706046)。set: set是STL中一种标准关联容器(vector,list,string,deque都是序列容器,而set,multiset,map,multimap是标准关联容器),它底层使用平衡的搜索树—...原创 2018-08-17 22:59:25 · 1212 阅读 · 0 评论 -
【面试题】 求链表倒数第K个节点
题目:输入一个链表输出链表中的第K个节点,(计数从1开始),链表节点定义如下://定义结构struct ListNode{ ListNode() :_next(NULL) ,_data(0) {} ListNode *_next; int _data;};实现思路: 我们可以定义两个指针,第一个指针从链表的头指针开始向前走K个节点,第二个指针开始保持不...原创 2018-07-20 16:52:12 · 1051 阅读 · 0 评论 -
【面试题】逆置反转单链表
题目:定义一个函数,输入一个链表的头节点,反转链表反转链表并输出反转后的链表头节点。链表节点定义如下: typedef int DataType;typedef struct SNode{ DataType _data; struct SNode* _pNext;//指向下一个节点的地址}Node,*PNode; 思路:定义三个指针分别指向当前遍历结点,它的前一个结点,它的后一...原创 2018-07-18 23:20:12 · 360 阅读 · 0 评论 -
【面试题】二叉树的层序遍历
题目:实现一颗二叉树的层序遍历,树的结点定义如下:template<class T>struct BinTreeNode{ BinTreeNode(const T& data) :_pLeft(NULL) ,_pRight(NULL) ,_data(data) {} BinTreeNode<T>* _pLeft; BinTreeNode<...原创 2018-07-18 20:25:58 · 473 阅读 · 0 评论 -
【数据结构】二叉树的基本操作与相关面试题
二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。下面为大家总结了二叉树相关的性质以及面试题:二叉树中有着一些非常重要的推论:1. 度为2的结点比度为0的结点少1个;2. 具有n个结点的完全二叉树的深度k 为log2(n+1)个结点;3. ...原创 2018-07-18 19:51:51 · 357 阅读 · 0 评论 -
【数据结构】括号匹配问题
给定一个字符串,其中的字符只包含三种括号:花括号{ }、中括号[ ]、圆括号( ),即它仅由 “( ) [ ] { }” 这六个字符组成。设计算法,判断该字符串是否有效,即字符串中括号是否匹配。括号匹配要求括号必须以正确的顺序配对,如“{ [ ] ( ) }”或 “[ ( { } [ ] ) ]” 等为正确的格式,而“[ ( ] )”或“{ [ ( ) }”或“( { ...原创 2018-06-11 17:07:10 · 30839 阅读 · 2 评论 -
【算法】希尔排序
希尔排序(Shell's Sort)是插入排序(点击打开链接)的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文...原创 2018-03-21 22:20:49 · 194 阅读 · 0 评论 -
【算法】冒泡排序
冒泡排序:冒泡排序(Bubble sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。算法步骤:(1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。(2)对每一对相邻...原创 2018-03-21 22:05:53 · 183 阅读 · 0 评论 -
【算法】 选择排序
选择排序: 选择排序是一种简单直观的排序算法。 它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。算法步骤: (1)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 (2)再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 (3)重复第二步,直到所有元素均排序...原创 2018-03-21 20:51:21 · 242 阅读 · 0 评论 -
【算法】插入排序
插入排序:有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将...原创 2018-03-21 20:19:47 · 222 阅读 · 0 评论 -
【C++】对称矩阵
对称矩阵压缩存储:压缩矩阵:对称矩阵存储时只需要存储上三角或下三角的数据,所以最多存储n*(n+1)/2个数据。对称矩阵和对称压缩存储的对应关系:下三角存储i>=j,SymmetricMatrix[i][j] == Array[i*(i+1)/2+j]原创 2017-11-26 23:13:08 · 4453 阅读 · 0 评论 -
【C++】链表实现约瑟夫环
约瑟夫环(约瑟夫问题)是一个数学的应用问题,下面以C++链表的方式解决该问题!原创 2017-11-18 23:11:19 · 4427 阅读 · 0 评论 -
【数据结构】C++实现顺序栈
栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。原创 2017-11-18 22:16:13 · 2890 阅读 · 0 评论 -
【STL】STL-vector、list、deque、stack详解
STL简介: STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高...原创 2018-08-15 16:39:41 · 596 阅读 · 0 评论