【每日刷题】Day99

【每日刷题】Day99

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

[1. 逆波兰表达式求值_牛客题霸_牛客网 (nowcoder.com)](#1. 逆波兰表达式求值_牛客题霸_牛客网 (nowcoder.com))

[2. 点击消除_牛客题霸_牛客网 (nowcoder.com)](#2. 点击消除_牛客题霸_牛客网 (nowcoder.com))

[3. 【模板】循环队列_牛客题霸_牛客网 (nowcoder.com)](#3. 【模板】循环队列_牛客题霸_牛客网 (nowcoder.com))

1. 逆波兰表达式求值_牛客题霸_牛客网 (nowcoder.com)

//思路:栈+遍历。

//遍历tokens,因为tokens中只包含算术运算符字符串或数字字符串,因此我们遍历时判断是否为+、-、*、/ 这四个运算符,如果不是则将数字插入栈;如果是,因为算术运算符是二元运算符,因此可以断定在遇到算术运算符之前栈中一定有两个数字,我们将两个数字获取并运算(获取两个数字时采用 获取栈顶元素--删除栈顶元素--获取栈顶元素--删除栈顶元素的 方式),将算好后的数字插入栈,此时栈中只有一个数字,继续往后遍历下一个数字,重复上述过程。

class Solution {

public:

int evalRPN(vector<string>& tokens)

{

int ans = 0;

vector<int> v1;

int ret1 = 0;

int ret2 = 0;

for(int i = 0;i<tokens.size();i++)

{

//判断是否遍历到的为4个运算符

if(tokens[i]=="*")

{

//获取栈顶数字

ret1 = v1.back();

//删除栈顶数字

v1.pop_back();

//获取栈顶数字

ret2 = v1.back();

//删除栈顶数字

v1.pop_back();

//将运算后的数字插入栈,此时栈中只有一个数字,继续遍历下一个数字

v1.push_back(ret2*ret1);

}

else if(tokens[i]=="+")

{

ret1 = v1.back();

v1.pop_back();

ret2 = v1.back();

v1.pop_back();

v1.push_back(ret2+ret1);

}

else if(tokens[i]=="-")

{

ret1 = v1.back();

v1.pop_back();

ret2 = v1.back();

v1.pop_back();

v1.push_back(ret2-ret1);

}

else if(tokens[i]=="/")

{

ret1 = v1.back();

v1.pop_back();

ret2 = v1.back();

v1.pop_back();

v1.push_back(ret2/ret1);

}

//如果不是则将数字插入栈

else

v1.push_back(stoi(tokens[i]));

}

return v1[0];

}

};

2. 点击消除_牛客题霸_牛客网 (nowcoder.com)

//思路:栈+遍历。

//遍历字符串s: 如果栈为空或者s[i]!=栈顶元素,则直接将s[i]入栈;否则,则删除栈顶元素

#include <iostream>

#include <vector>

using namespace std;

int main()

{

string s;

getline(cin,s);

string ans;

for(int i = 0;i<s.size();i++)

{

if(ans.empty()||s[i]!=ans.back())

ans.push_back(s[i]);

else

ans.pop_back();

}

if(ans.empty())

cout<<0<<endl;

else

cout<<ans<<endl;

return 0;

}

3. 【模板】循环队列_牛客题霸_牛客网 (nowcoder.com)

//思路:利用库中的队列实现循环队列。

#include <iostream>

#include <queue>

#include <string>

using namespace std;

class Cyclequeue

{

public:

Cyclequeue(size_t capacity)

{

_capacity = capacity;

}

void push(int x)

{

if(_size==_capacity)

cout<<"full"<<endl;

else

{

q1.push(x);

_size++;

}

}

void pop()

{

if(_size==0)

cout<<"empty"<<endl;

else

{

_size--;

int ret = q1.front();

q1.pop();

cout<<ret<<endl;

}

}

void front()

{

if(_size==0)

cout<<"empty"<<endl;

else

cout<<q1.front()<<endl;

}

private:

queue<int> q1;

size_t _capacity = 0;

size_t _size = 0;

};

int main()

{

int capacity = 0;

int num = 0;

cin>>capacity>>num;

Cyclequeue c1(capacity);

while(num--)

{

int data = 0;

string s;

cin>>s;

if(s=="push")

{

cin>>data;

c1.push(data);

}

if(s=="front")

c1.front();

if(s=="pop")

c1.pop();

}

return 0;

}

相关推荐
那个村的李富贵5 小时前
CANN加速下的AIGC“即时翻译”:AI语音克隆与实时变声实战
人工智能·算法·aigc·cann
power 雀儿5 小时前
Scaled Dot-Product Attention 分数计算 C++
算法
Yvonne爱编码5 小时前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
熬夜有啥好5 小时前
数据结构——哈希表
数据结构·散列表
琹箐5 小时前
最大堆和最小堆 实现思路
java·开发语言·算法
renhongxia16 小时前
如何基于知识图谱进行故障原因、事故原因推理,需要用到哪些算法
人工智能·深度学习·算法·机器学习·自然语言处理·transformer·知识图谱
坚持就完事了6 小时前
数据结构之树(Java实现)
java·算法
算法备案代理6 小时前
大模型备案与算法备案,企业该如何选择?
人工智能·算法·大模型·算法备案
赛姐在努力.6 小时前
【拓扑排序】-- 算法原理讲解,及实现拓扑排序,附赠热门例题
java·算法·图论
我能坚持多久6 小时前
【初阶数据结构01】——顺序表专题
数据结构