【每日刷题】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(tokensi=="*")

{

//获取栈顶数字

ret1 = v1.back();

//删除栈顶数字

v1.pop_back();

//获取栈顶数字

ret2 = v1.back();

//删除栈顶数字

v1.pop_back();

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

v1.push_back(ret2*ret1);

}

else if(tokensi=="+")

{

ret1 = v1.back();

v1.pop_back();

ret2 = v1.back();

v1.pop_back();

v1.push_back(ret2+ret1);

}

else if(tokensi=="-")

{

ret1 = v1.back();

v1.pop_back();

ret2 = v1.back();

v1.pop_back();

v1.push_back(ret2-ret1);

}

else if(tokensi=="/")

{

ret1 = v1.back();

v1.pop_back();

ret2 = v1.back();

v1.pop_back();

v1.push_back(ret2/ret1);

}

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

else

v1.push_back(stoi(tokensi));

}

return v10;

}

};

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

//思路:栈+遍历。

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

#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()||si!=ans.back())

ans.push_back(si);

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;

}

相关推荐
旖-旎1 分钟前
FloodFill(图像渲染)(1)
c++·算法·深度优先·力扣
戴西软件14 分钟前
戴西 DLM 许可授权管理系统:破解无网络环境下工业软件授权难题,助力制造企业降本增效
网络·人工智能·python·深度学习·程序人生·算法·制造
2601_9618752425 分钟前
法考资料2026|全套|资料已整理
数据结构·算法·链表·贪心算法·eclipse·线性回归·动态规划
无限码力29 分钟前
美团研发岗 4月18号笔试真题 - 坐标
算法·美团笔试真题·美团笔试题·美团研发岗笔试题·美团研发岗4月18号真题
汉克老师1 小时前
GESP2026年3月认证C++六级真题与解析(编程题1 选数)
c++·动态规划·线性dp·gesp六级·状态转移·选与不选
有点。1 小时前
C++倍增法(练习题)
c++·算法
凡人叶枫1 小时前
Effective C++ 条款23:宁以 non-member、non-friend 替换 member 函数
linux·开发语言·c++·嵌入式开发
C语言小火车2 小时前
什么时候用智能指针?什么时候用裸指针?
c语言·c++·学习·指针
玖玥拾2 小时前
C/C++ 基础笔记(十二)友元、运算符重载
c语言·c++·运算符重载·友元
智者知已应修善业2 小时前
【51单片机8位数码管同时倒计时从9999】2024-1-25
c++·经验分享·笔记·算法·51单片机