【每日刷题】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;

}

相关推荐
hutaotaotao26 分钟前
c++中的输入输出流(标准IO,文件IO,字符串IO)
c++·io·fstream·sstream·iostream
机器学习之心28 分钟前
机器学习用于算法交易(Matlab实现)
算法·机器学习·matlab
AL流云。29 分钟前
【优选算法】C++滑动窗口
数据结构·c++·算法
qq_429879672 小时前
省略号和可变参数模板
开发语言·c++·算法
CodeWithMe3 小时前
【C/C++】std::vector成员函数清单
开发语言·c++
uyeonashi3 小时前
【QT控件】输入类控件详解
开发语言·c++·qt
飞川撸码3 小时前
【LeetCode 热题100】网格路径类 DP 系列题:不同路径 & 最小路径和(力扣62 / 64 )(Go语言版)
算法·leetcode·golang·动态规划
Neil今天也要学习3 小时前
永磁同步电机参数辨识算法--IPMSM拓展卡尔曼滤波全参数辨识
单片机·嵌入式硬件·算法
yzx9910134 小时前
基于 Q-Learning 算法和 CNN 的强化学习实现方案
人工智能·算法·cnn
亮亮爱刷题4 小时前
算法练习-回溯
算法