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

}

相关推荐
算AI7 小时前
人工智能+牙科:临床应用中的几个问题
人工智能·算法
我不会编程5557 小时前
Python Cookbook-5.1 对字典排序
开发语言·数据结构·python
懒羊羊大王&7 小时前
模版进阶(沉淀中)
c++
owde8 小时前
顺序容器 -list双向链表
数据结构·c++·链表·list
第404块砖头8 小时前
分享宝藏之List转Markdown
数据结构·list
GalaxyPokemon8 小时前
Muduo网络库实现 [九] - EventLoopThread模块
linux·服务器·c++
W_chuanqi8 小时前
安装 Microsoft Visual C++ Build Tools
开发语言·c++·microsoft
hyshhhh8 小时前
【算法岗面试题】深度学习中如何防止过拟合?
网络·人工智能·深度学习·神经网络·算法·计算机视觉
蒙奇D索大9 小时前
【数据结构】第六章启航:图论入门——从零掌握有向图、无向图与简单图
c语言·数据结构·考研·改行学it
A旧城以西9 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea