mtgo666
mtgo666
全部文章
学习笔记
Linux学习笔记(10)
STL(7)
基础算法(9)
题解(26)
归档
标签
去牛客网
登录
/
注册
mtgo666的博客
全部文章
/ 学习笔记
(共10篇)
判断一个出栈序列是否合法
来自专栏
1、要求 给定一个入栈序列和一个出栈序列,判断这个出栈序列是否合法。 例如: 入栈序列:pushV:[1, 2, 3, 4, 5, 6, 7] 出栈序列:popV:[1, 3, 2, 5, 7, 6, 4] 2、实现思路 我们使用栈模拟的方式来做这道题: 使用一个辅助栈来模拟出入栈的过程 ...
C++
栈
模拟
2022-04-17
2
2220
利用先序和中序序列构建二叉树
来自专栏
1、需求 我们知道,利用先序序列和中序序列可以唯一的确定一个二叉树,比如先序[1,2,4,5,3]和中序[4,2,5,1,3]可以构成二叉树:[1,2,3,4,5]。那思路落实到代码上应该如何写呢? 2、思路 想想我们是如何在脑海中把上述两个序列构建成二叉树的: 先构造根节点:先序序列的第一个元素...
C++
二叉树
2022-03-27
0
1100
反转链表专题
来自专栏
1、简介 链表的反转是面试中比较常考的一个点,在这里总结了反转链表的几种题型和要点。 2、题型 2.1 反转链表 2.1.1 问题描述 给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。 2.1.2 实现思路 我们可以回想...
C++
链表
2022-03-25
0
440
单链表的快速排序
来自专栏
1、简介 我相信对于一个数组使用快排是十分简单的,如果对一个无序的单链表排序,是否也能够使用快排呢? 我们先来回顾一下对无序数组的快排:先把数组中的一个元素设置为哨兵(一般是数组的第一个元素),然后利用两个指针指向数组的头和尾。分别移动这两个指针和哨兵进行比较,一趟下来可以把无序数组分为两部分,一部...
C++
链表
快速选择
2022-03-22
0
2921
快速幂算法
来自专栏
1、入门小谈 假如让你求3的6次方后三位,这个程序毫无疑问是非常简单的: //求幂运算 long long test(int base,long long po) { int result = 1; for(int i=0;i<po;++i) result*=base; return r...
C++
数学
#快速幂
2022-03-20
1
631
二叉树的三种遍历(非递归)
来自专栏
1、简介 我们在递归的时候说到过,一般我们如果想把递归的算法转换至非递归的实现,我们可以自己利用辅助栈来代替系统栈保存一些信息。所以在实现二叉树的三种非递归遍历的时候,我们需要开辟一个辅助栈来保存一些信息。 2、二叉树结点结构 /* struct TreeNode { int val; stru...
C++
二叉树
2022-03-10
0
650
全排列算法
来自专栏
1、全排列简介 比如对于一个序列:[1,2,3]、这个序列的全排列就是: [1,2,3] [1,3,2] [2,1,3] [2,3,1] [3,1,2] [3,2,1] 全排列的定义十分简单。我们在刷题的过程中也经常会碰见一些需要求全排列的题目。比如:链接字符串的排列、链接把数组排成最小的数等。接...
C++
#递归
#全排列
2022-03-06
0
980
实现一个哈希表
来自专栏
1、哈希表简介 查找序列中某个元素是我们经常会碰见的一种操作,但是在顺序查找表(比如二分查找)和动态查找表(比如二叉搜索树)中,由于记录的存储位置和关键字之间不存在确定的对应关系,在查找时,只能通过一系列的给定值和关键字的比较,该算法均是建立在“比较”的基础上,查找效率依赖于查找过程中给定值和关键字...
C++
#哈希表
#数据结构
2022-03-05
1
537
模拟一个顺序栈
来自专栏
1、简介 栈作为一种常用的抽象数据类型,在平常的运用是十分常见的。它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或...
C
#栈
2022-03-02
1
422
reverse函数(翻转vector代码实例)
简介 使用reverse函数必须包含头文件algorithm。 以翻转vector容器为例 #include <iostream> #include <vector> #include <algorithm> using namespace std; //打印...
C++
数组
2022-02-19
0
1209