文章目录栈栈的操作栈的初始化入栈出栈取栈顶的元素判断栈是否为空求栈中数据元素的个数遍历栈中的所有元素清空栈栈的存储结构顺序存储链式存储顺序栈和链栈的区别栈的实战题目队列队列的操作入队出队遍历队列清空队列队列的存储结构顺序存储循环队列链式存储队列实战题目总结❤️作者简介:大家好我是小鱼干儿♛是一个热爱编程、热爱算法的大三学生,蓝桥杯国赛二等奖获得者🐟个人主页:https://blog.csdn.net/qq_52007481⭐个人社区:【小鱼干爱编程】🔥算法专栏:算法竞赛进阶指南💯刷题网站:虽然市面上有很多的刷题网站,但是里面的题又多又杂,不适合系统性的提高算法能力,这里推荐一款我常用的刷题网站
一、题目大意标签:栈和队列https://leetcode.cn/problems/implement-queue-using-stacks请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现MyQueue类:voidpush(intx)将元素x推到队列的末尾intpop()从队列的开头移除并返回元素intpeek()返回队列开头的元素booleanempty()如果队列为空,返回true;否则,返回false说明:你只能使用标准的栈操作——也就是只有 pushtotop, peek/popfromtop, size,和 isem
一、题目大意标签:栈和队列https://leetcode.cn/problems/implement-queue-using-stacks请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现MyQueue类:voidpush(intx)将元素x推到队列的末尾intpop()从队列的开头移除并返回元素intpeek()返回队列开头的元素booleanempty()如果队列为空,返回true;否则,返回false说明:你只能使用标准的栈操作——也就是只有 pushtotop, peek/popfromtop, size,和 isem
一、题目大意标签:贪心https://leetcode.cn/problems/queue-reconstruction-by-height假设有打乱顺序的一群人站成一个队列,数组people表示队列中一些人的属性(不一定按顺序)。每个people[i]=[hi,ki]表示第i个人的身高为hi,前面正好有ki个身高大于或等于hi的人。请你重新构造并返回输入数组 people所表示的队列。返回的队列应该格式化为数组queue,其中queue[j]=[hj,kj]是队列中第j个人的属性(queue[0]是排在队列前面的人)。示例1:输入:people=[[7,0],[4,4],[7,1],[5,0
一、题目大意标签:贪心https://leetcode.cn/problems/queue-reconstruction-by-height假设有打乱顺序的一群人站成一个队列,数组people表示队列中一些人的属性(不一定按顺序)。每个people[i]=[hi,ki]表示第i个人的身高为hi,前面正好有ki个身高大于或等于hi的人。请你重新构造并返回输入数组 people所表示的队列。返回的队列应该格式化为数组queue,其中queue[j]=[hj,kj]是队列中第j个人的属性(queue[0]是排在队列前面的人)。示例1:输入:people=[[7,0],[4,4],[7,1],[5,0
最近刷leetcode题,使用了move()函数及优先队列(堆)priority_queue数据结构,记录一下!1.move函数move(obj)函数的功能是把obj当做右值处理,可以应用在对象的移动上。右值引用为了支持移动操作,新标准引入了一种新的引入类型——右值引用,所谓右值引用就是必须绑定到右值的引用。通过&&而不是&来获得右值引用。注意,如果仅仅是定义右值引用,那么obj本身不会被移走,在作为参数时会发生obj被移走:如下:stringstr="test";string&&r=move(str);coutendl;coutendl;stringt(r);coutendl;cout运行结
最近刷leetcode题,使用了move()函数及优先队列(堆)priority_queue数据结构,记录一下!1.move函数move(obj)函数的功能是把obj当做右值处理,可以应用在对象的移动上。右值引用为了支持移动操作,新标准引入了一种新的引入类型——右值引用,所谓右值引用就是必须绑定到右值的引用。通过&&而不是&来获得右值引用。注意,如果仅仅是定义右值引用,那么obj本身不会被移走,在作为参数时会发生obj被移走:如下:stringstr="test";string&&r=move(str);coutendl;coutendl;stringt(r);coutendl;cout运行结
C++进阶-3-4stack容器、queue容器1#include2#include3#include4usingnamespacestd;56//stack容器7//先进后出89//queue容器10//先进先出1112//stack容器13voidtest01(){1415stackint>s;1617//入栈18s.push(10);19s.push(20);20s.push(30);21s.push(40);2223cout"栈的大小:"endl;2425//只要栈不为空,查看栈顶,并且执行出栈操作26while(!s.empty())27{28//查看栈顶元素29cout"栈顶元素为
C++进阶-3-4stack容器、queue容器1#include2#include3#include4usingnamespacestd;56//stack容器7//先进后出89//queue容器10//先进先出1112//stack容器13voidtest01(){1415stackint>s;1617//入栈18s.push(10);19s.push(20);20s.push(30);21s.push(40);2223cout"栈的大小:"endl;2425//只要栈不为空,查看栈顶,并且执行出栈操作26while(!s.empty())27{28//查看栈顶元素29cout"栈顶元素为
题目链接:http://poj.org/problem?id=3934;解题思路:我们要求的是n个人m对,所以需要两个状态,i和j,表示一共i个人,其中j对排列方式的方法数,我们需要寻找一个状态由哪些状态来决定(这是解题的关键),我们做一个dp题,第一步就是先要找到他的状态,第二步就是寻找每个状态之间的转移方式,所以我们就需要知道第i,j个状态是由哪些状态所决定的,不难知道,i个人的排列方式,就是i-1个人的排列方式再插入一个最矮的人,在不同的位置插入一个人所导致的结果是不同的,如果在他的两端插入那么每种方式就会各自增加一对可以互相看见的同学,如果在任意的两人之间插入的话,那么每种方式就会增加