数据结构与算法
baddy你个小菜鸡
延迟满足
展开
-
出栈顺序
概念:举例:求出abc的所有出栈结果。这个问题描述有歧义,应该是分段入栈的顺序,也就是说,可能先入栈a,取出a,入栈b,取出b……因此,所有出栈结果为:abc,acd,bac,bca,cba. 不可能为cab,因为c出栈的前提是ab都已经入栈。例题:...原创 2020-06-07 17:56:17 · 1604 阅读 · 0 评论 -
回溯算法
概念 回溯法(back tracking)(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。实例一:八皇后问题#include <iostream>#include <vector>using namespace std;int res=0;//判断是否满足皇...原创 2020-06-07 13:29:53 · 300 阅读 · 0 评论 -
重建二叉树
#include <iostream>#include <vector>#include <queue>using namespace std;struct TreeNode { int val; TreeNode* left; TreeNode* right;};TreeNode* ConstructCore(vector<int...原创 2019-08-12 17:20:51 · 101 阅读 · 0 评论 -
散列表
一、散列表的由来? 1.散列表来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性。 2.需要存储在散列表中的数据我们称为键,将键转化为数组下标的方法称为散列函数,散列函数的计算结果称为散列值。 3.将数据存储在散列值对应的数组下标位置。 二、如何设计散列函数? 总结3点设计散列函数的基本要求: 1...转载 2019-06-08 10:04:06 · 122 阅读 · 0 评论 -
队列
队列跟栈一样,也是一种操作受限的线性表数据结构。它具有先进先出的特性,最基本的操作也是两个:入队 enqueue(),在队尾插入元素;出队 dequeue(),在队头删除元素。顺序队列和链式队列1、手写基于数组的实现方法:数组中的数据不连续问题如何解决。// 用数组实现的队列public class ArrayQueue { // 数组:items,数组大小:n pr...转载 2019-05-29 21:46:40 · 181 阅读 · 0 评论 -
排序算法(上)
如何分析一个“排序算法”?1、排序算法的执行效率最好情况、最坏情况、平均情况时间复杂度 为什么要区分这三种时间复杂度呢?第一,有些排序算法会区分,为了好对比,所以我们最好都做一下区分。第二,对于要排序的数据,有的接近有序,有的完全无序。有序度不同的数据,对于排序的执行时间肯定是有影响的,我们要知道排序算法在不同数据下的性能表现。 时间复杂度的系数、常数 、低阶 实际的软件开发...转载 2019-05-31 17:28:45 · 126 阅读 · 0 评论 -
栈
从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在在一端插入和删除数据,只支持入栈和出栈操作。后进先出是它最大的特点。何时使用栈?相比数组和链表,栈带给我的只有限制,并没有任何优势。那我直接使用数组或者链表不就好了吗?为什么还要用这个“操作受限”的“栈”呢?事实上,从功能上来说,数组或链表确实可以替代栈,但你要知道,特定的数据结构是对特定场景的抽象,而且,数组或链表暴露了太多...转载 2019-05-28 11:31:16 · 132 阅读 · 0 评论 -
链表
链表(Linked List)链表通过指针将一组零散的内存块串联在一起。其中,我们把内存块称为链表的“结点”。为了将所有的结点串起来,每个链表的结点除了存储数据之外,还需要记录链上的下一个结点的地址。我们把这个记录下个结点地址的指针叫作后继指针 next。单链表与数组一样,链表也支持数据的查找、插入和删除操作:我们知道,在进行数组的插入、删除操作时,为了保持内存数据的连续...转载 2019-05-27 21:42:12 · 127 阅读 · 0 评论 -
数组概念
数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 线性表(Linear List)顾名思义,线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。而与它相对立的概念是非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。...转载 2019-05-11 16:22:55 · 128 阅读 · 0 评论 -
排序算法
一、选择排序非稳定排序、原地排序、时间复杂度O(n^2)、空间复杂度O(1)void SelectSort(int* arr, int length){ if(arr==nullptr || length<2) return; for(int i=0; i<length-1; ++i){ int min=i; ...原创 2019-02-26 20:42:29 · 112 阅读 · 0 评论