
数据结构
zou_albert
菜鸡程序员一个
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【数据结构与算法】-知识图谱
摘取的博客:https://blog.youkuaiyun.com/YYZZHC999/article/details/89039976摘取的链接:【数据结构和算法】数据结构 思维导图基础算法思想:排序算法基础数论枚举算法递归算法分治算法回溯算法贪心算法动态规划...原创 2020-08-28 20:28:17 · 1030 阅读 · 0 评论 -
图片基本概念:极大连通子图 + 极小连通子图 + 连通分量
感谢:https://blog.youkuaiyun.com/qq_38262266/article/details/77010230原创 2020-08-24 12:10:48 · 1883 阅读 · 0 评论 -
二叉树的度以及基本概念
二叉树的度是指树中所以结点的度数的最大值。二叉树的度小于等于2,因为二叉树的定义要求二叉树中任意结点的度数(结点的分支数)小于等于2 。1 基本概念二叉树是树形结构中一种特殊的树形结构:二叉树中的每个结点至多有2棵子树(即每个结点的度小于等于2),并且两个子树有左右之分,顺序不可颠倒。在二叉树中还有种特殊的二叉树就是完全二叉树:度为1的N1只有0个或1个称之为完全二叉树。所有结点中除了叶子结点以外的结点都有两棵子树的完全二叉树称为满二叉树。2 重要性质二叉树中,第m-层最多有2^(m-1原创 2020-08-24 12:05:54 · 24497 阅读 · 0 评论 -
c++优先队列(priority_queue)用法详解
文章目录1 priority_queue基本介绍2 举例说明例子1例子2例子3例子41 priority_queue基本介绍既然是队列那么先要包含头文件#include , 他和queue不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队。优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它 本质是一个堆实现的。和队列基本操作相同:top 访问队头元素empty 队列是否为空size 返回队列内元素个数push 插入元素到队尾 (并排转载 2020-08-06 15:45:38 · 373 阅读 · 0 评论 -
面试题目--单链表的反转(两种方法)
文章目录1 定义2 方式一:就地反转法2.1 思路2.2 解释1初始状态2 过程2.3 代码2.4 总结3 方式二:新建链表,头节点插入法3.1 思路3.2 解释1 初始状态2 过程3.3 代码3.4 总结leetcode的相关题目:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/1 定义单链表node的数据结构定义如下:class ListNode { int val; ListNode next; L原创 2020-08-04 17:19:26 · 631 阅读 · 0 评论 -
c++类 函数列表
string 函数列表函数名 描述begin 得到指向字符串开头的Iteratorend 得到指向字符串结尾的Iteratorrbegin 得到指向反向字符串开头的Iteratorrend 得到指向反向字符串结尾的Iteratorsize 得到字符串的大小length 和size函数功能相同max_size 字符串可能的最大大小capacity 在不重新分配内存的情况下,字符串可能的大小empty原创 2020-07-24 12:33:32 · 1209 阅读 · 0 评论 -
c++中map的value进行排序
C++ STL中的map是以key排序的。int main(){ map<int, int> iMap; iMap[1] = 20; iMap[2] = 10; iMap[5] = 30; iMap[4] = 0; for (auto it = iMap.begin(); it != iMap.end(); it++) cout << it->first << ':' << it->原创 2020-07-22 09:32:32 · 2859 阅读 · 0 评论 -
二叉树的高度和深度的区别
二叉树的高度和深度的区别高度和深度是相反的表示,深度是从上到下数的,而高度是从下往上数。深度的定义:某节点的深度是指从根节点到该节点的最长简单路径边的条数。高度的定义:高度是指从该节点到叶子节点的最长简单路径边的条数。注意:这里边的条数是规定根节点的深度和叶子节点的高度是0;所以树的深度和高度是相等的,而对其他节点来说深度和高度不一定相等。如 B和C节点深度都为1,因为从根节点到到该节点的边数为1,B的高度为2,而C的高度为1。当然树的深度是3高度也是3。树的高度和深度是相等的。总结:1原创 2020-07-17 16:25:25 · 17932 阅读 · 3 评论 -
C++中数组作为函数参数的注意问题
C++中数组作为函数参数的注意问题1 问题引入从《剑指Offer》上的相关问题,下面的输出是什么?#include<iostream>using namespace std;int GetSize(int data[]) { return sizeof(data);}int main() { int data1[] = {1,2,3,4,5}; int size1 = sizeof(data1); int *data2 = data1;原创 2020-07-14 16:20:43 · 5790 阅读 · 3 评论 -
C++ 获取数组长度
C++ 获取数组长度1 字符串数组对于字符串数组,使用strlen()函数来获取字符串数组的长度。char a1[] = "fwegweasdasdwqew";cout << strlen(a1) << endl;2 数字数组例如: int arr[] = { 1,5,9,10,9,2 }; 可以用sizeof(a)/sizeof(a[0])来获取数组的长度。原理:sizeof()函数可以返回数组所占的内存,而sizeof(a[0])返回的是数组第一个元素所占的内原创 2020-07-14 14:44:59 · 135229 阅读 · 4 评论 -
二分查找(折半查找)的递归和非递归实现(c++)
1步骤描述使用前提:有序数组中查找关键词所在位置。1.首先确定整个查找区间的中间位置 mid = start+(end-start)/2。2使用待查关键字key值与中间位置的关键字值进行比较。3 若相等,则查找成功若大于,则在后(右)半个区域继续进行折半查找若小于,则在前(左)半个区域继续进行折半查找4 对确定的缩小区域再按折半公式,重复上述步骤。2 非递归二分查找算法int bin_search1(int key,int arr[],int length){ int start原创 2020-07-14 14:17:41 · 1441 阅读 · 0 评论 -
STL中的栈(stack)队列(queue)双端队列(deque)等结构的基本操作总结
文章目录1 栈(stack)的基本用法1.1头文件和数据类型1.2 基本操作注意:栈没有clear()函数,没有封装好的clear()函数,同样队列queue也没有clear()函数的。1.3 清空栈的方式方法一:循环清空方法二:方法三:2 队列(queue)的基本用法2.1头文件和数据类型2.2 基本操作1 栈(stack)的基本用法1.1头文件和数据类型数据类型,既可以是整形(int),浮点型(float)也可以是二叉树指针(TreeNode *)等等#include<stack>原创 2020-07-10 00:27:03 · 1785 阅读 · 0 评论 -
C++中的unordered_map用法详解
1 简介unordered_map是一个将key和value关联起来的容器,它可以高效的根据单个key值查找对应的value。key值应该是唯一的,key和value的数据类型可以不相同。unordered_map存储元素时是没有顺序的,只是根据key的哈希值,将元素存在指定位置,所以根据key查找单个value时非常高效,平均可以在常数时间内完成。unordered_map查询单个key的时候效率比map高,但是要查询某一范围内的key值时比map效率低。可以使用[]操作符来访问key值对应的原创 2020-06-27 16:07:28 · 213820 阅读 · 21 评论 -
C++ STL list使用简介
1 List的介绍 List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢,使用时需要添加头文件,可以遍历。 List是一个十分强大的链表容器概念!可以进行各种遍历、插入、删除、去重、合并、拼接、排序等。 list(链表)也即链式表,在数据结构中,我们知道线性表的物理存储结构有两种,顺序表(数组)和链式表(结点)。链表是在堆中为每一个元素分配内存,然后利用指针将所有元素串起来。根据这种物理存储结构,我们很容易明白:链表在插入、删除效率上比较原创 2020-06-24 16:05:18 · 436 阅读 · 0 评论 -
【算法】如何判断链表有环
【算法】如何判断链表有环转载 2020-06-24 09:27:51 · 151 阅读 · 0 评论 -
leetcode报错:member access within null pointer of type struct ListNode
leetcode报错:member access within null pointer of type ‘struct ListNode’转载 2020-06-24 08:47:43 · 428 阅读 · 0 评论 -
算法复杂度分析,算法复杂度o(1), o(n), o(logn), o(nlogn) 时间复杂度On和空间复杂度O1是什么意思?
算法复杂度分析,算法复杂度o(1), o(n), o(logn), o(nlogn) 时间复杂度On和空间复杂度O1是什么意思?转载 2020-06-23 21:43:03 · 1363 阅读 · 0 评论 -
算法的时间与空间复杂度(一看就懂)
算法的时间与空间复杂度(一看就懂)转载 2020-06-23 21:40:09 · 239 阅读 · 0 评论 -
总结经典排序算法
0. 算法概述0.1算法分类十种常见排序算法可以分为两大类:比较排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。0.2算法复杂度0.3相关的概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。时间原创 2020-06-19 13:30:05 · 641 阅读 · 0 评论 -
LeetCode:reference binding to null pointer of type value_type
https://blog.youkuaiyun.com/m0_38088298/article/details/79249044转载 2020-06-15 09:35:47 · 242 阅读 · 0 评论 -
用两个栈实现一个队列(转载)
用两个栈实现一个队列——我作为面试官的小结var stack1 = [];var stack2 = [];function push(node){ stack1.push(node);}function pop(){ if(stack2.length != 0){ return stack2.pop(); }else{ if(stack1.length == 0){ return; }转载 2020-06-09 11:10:29 · 129 阅读 · 0 评论 -
二叉树、二叉排序树、平衡二叉树等
https://www.cnblogs.com/manji/p/4903990.html转载 2020-06-05 11:10:15 · 136 阅读 · 0 评论 -
图的广度优先搜索(BFS)和深度优先搜索(DFS)算法解析
https://blog.youkuaiyun.com/weixin_40953222/article/details/80544928?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.noneca转载 2020-06-05 10:37:45 · 264 阅读 · 0 评论 -
【算法入门】广度/宽度优先搜索(BFS)
BFS简单介绍的转载 2020-06-05 10:32:36 · 229 阅读 · 0 评论 -
c++中double型的最大值和最小值
DBL_MAX:double型的最大值DBL_MIN:double型的最小值FLT_MAX:float型的最大值FLT_MIN:float型的最小值1、负值取值范围为-1.79769313486231570E+308到-4.94065645841246544E-324;2、正值取值范围为4.94065645841246544E-324到1.79769313486231570E+308。...原创 2020-05-31 21:16:22 · 19316 阅读 · 1 评论 -
C++ STL 队列Queue用法介绍
1.queue的基本概念 C++队列queue模板类的定义在头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。 队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称原创 2020-05-30 18:54:21 · 582 阅读 · 0 评论 -
C++ map用法总结(整理)
C++ Map常见用法说明 C++ map用法总结(整理)转载 2020-05-29 18:32:44 · 833 阅读 · 0 评论 -
C++ STL 常用算法
https://blog.youkuaiyun.com/xgf415/article/details/52947454转载 2020-05-29 16:43:42 · 272 阅读 · 0 评论 -
c++ algorithm下的常用函数列举
1、algorithm的简单介绍 c++之中的algorithm库包含了所有vector、list、set、map数据结构能想到的一些函数,例如查找,替换,排序,计数等常用的功能的。 官网的链接:http://www.cplusplus.com/reference/algorithm/ 可以直接的学习。2、algorithm常用的函数介绍2.1 max(),min(),abs()原创 2020-05-29 16:10:15 · 2690 阅读 · 0 评论 -
python 实现 四叉树(二维平面进行管理的)
# -*- coding: utf-8 -*-'''@author: zou_albert'''import pdbclass Node(): # 普通节点 反复调用 def __init__(self, parent ,options, pos_num): ## pos_num 代表子节点的那个方位的数字 self.depth = parent....原创 2020-02-18 14:15:30 · 1401 阅读 · 2 评论