当前位置: 首页 > news >正文

做网站怎么赚钱滑县电个人网络销售平台

做网站怎么赚钱滑县电,个人网络销售平台,网站优化 检测响应速度,做网站的内容第一部分:基础知识 栈先进后出,队列先进先出栈用stack实现,主要函数有pop,push,top队列由queue或者deque实现,主要函数有front,back,push,pop,emplace&#…

第一部分:基础知识

  1. 栈先进后出,队列先进先出
  2. 栈用stack实现,主要函数有pop,push,top
  3. 队列由queue或者deque实现,主要函数有front,back,push,pop,emplace(在队尾直接加一个元素)

第二部分:习题部分

(1)232. 用栈实现队列 - 力扣(LeetCode)

本题比较简单,只需要通过两个栈相互替换数据即可。

其中感觉比较巧妙的就是判断second是否为空,从而判断是否需要倒置

class MyQueue {
public:stack<int>first;stack<int>second;MyQueue() {}void push(int x) {first.push(x);return;}int pop() {//注意此处弹出的是压在栈底的东西int x;if(second.empty()){while(!first.empty()){x=first.top();first.pop();second.push(x);}}x=second.top();second.pop();return x;}int peek() {int x;if(second.empty()){while(!first.empty()){x=first.top();first.pop();second.push(x);}}x=second.top();return x;}bool empty() {return first.empty()&&second.empty();}
};

(2)225. 用队列实现栈 - 力扣(LeetCode)

解题思路:此题目比较简单,仅需要对pop操作时候注意简化,将第一个队列中的全部元素拷贝到第二个队列中,并且将第一个剩余的弹出并保存返回,然后swap即可得到所需要的新的first

class MyStack {
public:queue<int>first;queue<int>second;MyStack() {}void push(int x) {first.push(x);}int pop() {//首先这里要进行判断的while(!first.empty()&&first.size()>1){second.push(first.front());first.pop();}int k=first.front();first.pop();swap(first,second);return k;}int top() {int x=this->pop();first.push(x);return x;}bool empty() {return first.empty()&&second.empty();}
};

(3)20. 有效的括号 - 力扣(LeetCode)

解题思路:本题目比较简单,需要考虑几种特殊情况

  1. 如果括号的数量是奇数,那么肯定不可能匹配成功
  2. 如果括号栈中最后还剩余,肯定不可能返回true
  3. 如果一左一右括号匹配不上,则直接返回flase
class Solution {
public:bool isValid(string s) {int n=s.size();if(n==0||n%2==1)return false;stack<char>stack;for(int i=0;i<s.size();i++){if(s[i]=='(')stack.push(')');else if(s[i]=='[')stack.push(']');else if(s[i]=='{')stack.push('}');else{if(stack.empty()||s[i]!=stack.top()){return false;}stack.pop();}}return stack.empty()==1;}
};

(4)1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode)

本题思路:如果遇到两个一样的则弹出,最后将栈中的元素进行翻转

class Solution {
public:string removeDuplicates(string s) {stack<char>stack;for(int i=0;i<s.size();i++){if(stack.empty()||s[i]!=stack.top()){stack.push(s[i]);continue;}else{stack.pop();}}string ans;while(!stack.empty()){ans+=stack.top();stack.pop();}reverse(ans.begin(),ans.end());return ans;}
};

(5)150. 逆波兰表达式求值 - 力扣(LeetCode)

真题思路比较简单,可以直接秒掉

class Solution {
public:int evalRPN(vector<string>& tokens) {stack<long long>operate;int n=tokens.size();for(int i=0;i<n;i++){//如果不是操作符则直接入栈if(tokens[i] != "+" && tokens[i] != "-" && tokens[i] != "*" && tokens[i] != "/"){operate.push(stoll(tokens[i]));}//如果是操作符则弹出运算else{long long num1=operate.top();operate.pop();long long num2=operate.top();operate.pop();if (tokens[i] == "+") operate.push(num2 + num1);if (tokens[i] == "-") operate.push(num2 - num1);if (tokens[i] == "*") operate.push(num2 * num1);if (tokens[i] == "/") operate.push(num2 / num1);}}return operate.top();}
};

(6)239. 滑动窗口最大值 - 力扣(LeetCode)

解题思路:用到了单调队列

  1. 注意两点:首先这个单调队列如何维护:不断存放更小值,如果遇到更大的值的话队首会被弹出。
  2. 检测队首的是否在这个区间内,用一个if就可以
  3. 最后必须i>=k-1的时候才允许加入,否则会出现第一二个元素,他不是范围内的最大值,但是他也加进去了。
class Solution {
public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {//1,初始化vector<int>ans;deque<int>deq;//2.维护单调队列for(int i=0;i<nums.size();i++){//首先弹出超出范围的数值if(!deq.empty()&&deq.front()==i-k){deq.pop_front();}//维护单调队列while(!deq.empty()&&nums[i]>nums[deq.back()]){deq.pop_back();}//构造窗口deq.push_back(i);//加入结果if(i>=k-1){ans.push_back(nums[deq.front()]);}}return ans;}
};

(7)347. 前 K 个高频元素 - 力扣(LeetCode)

解题思路:堆

  1. 堆的三个元素分别为:存储变量,底层实现容器,比较逻辑。第一个比较简单,第二个直接在前面加vector<>即可,第三个比较逻辑可以通过static bool cmp设置一个函数,然后通过decltype(&cmp)来更改比较逻辑。也可以通过构造一个struct重载运算符。
  2. 构造完最大堆后,只需要不断弹出顶部元素即可。
class Solution {
public://第二种构造方法的structstruct ComparePerson {bool operator()(const pair<int,int>& a, const pair<int,int>& b) {return a.second < b.second; // 最大堆(如果比较函数返回 true,则表示第一个参数(a)应该排在第二个参数(b)的前面。//如果比较函数返回 false,则表示第一个参数(a)应该排在第二个参数(b)的后面。//这里面其实想放的是b的频率更大,所以应该返回true,所以a就放在了b的前面,//然后优先队列优先构造底部,所以a频率小的就在底部,顶部就是最大值。}};// 自定义比较函数,用于优先队列static bool cmp(const pair<int, int>& a, const pair<int, int>& b) {return a.second < b.second; // 用于最大堆}vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int, int> cnt; // 用于统计每个数字的频率vector<int> ans; // 存储结果// 统计每个数字的频率for (int num : nums) {cnt[num]++;}// 构造最大堆priority_queue<pair<int, int>, vector<pair<int, int>>, decltype(&cmp)> maxHeap(cmp);//第二种构造方法//priority_queue<pair<int, int>, vector<pair<int, int>>, ComparePerson> maxHeap;//插入元素for(auto item:cnt){maxHeap.push(item);}//取出元素while(k>0&&!maxHeap.empty()){auto item=maxHeap.top();ans.push_back(item.first);maxHeap.pop();k--;}return ans;}
};

http://www.cadmedia.cn/news/4314.html

相关文章:

  • 为外国企业做中文网站建设网络营销工具
  • 网站标题算关键词优化吗安康地seo
  • qq钓鱼网站制作怎么利用互联网推广
  • 高端网站搜索引擎优化需要多少钱
  • 江西省建设厅业绩网站平谷头条新闻
  • 如何做网络营销推广掷25金手指效率高seo外包费用
  • 武汉大学校园网站建设方案江北关键词优化排名seo
  • 深入浅出javaweb实战重庆seo排名优化
  • 武汉做网站小程序哪家公司好河南企业站seo
  • 复制审查元素做网站网站搜索引擎拓客
  • 网页设计图片横排代码临沂seo优化
  • 网站建设开发语言与平台武汉seo 网络推广
  • 太原市住房和城乡建设委员会官方网站百度网页版链接地址
  • 河南郑州疫情网店seo名词解释
  • 市场来说网站建设销售发展怎么样搜索引擎营销方式
  • 网站建设费 无形资产网站推广app下载
  • 如何做网站店铺在线数据分析工具
  • 河南省大型项目建设办公室网站网络营销推广方法和手段
  • 福建省人民政府网站官网互联网广告管理暂行办法
  • 做百度色情网站排名赚钱吗宁波seo
  • 投资建设项目管理师报名网站东莞免费建站公司
  • 网站门户设计seo试用软件
  • 网站维护费公司网络营销策划书
  • 建站网站建设提高工作效率的措施
  • 网站备案完毕 怎样建设网站免费友情链接网页
  • 插插插网站正在建设中模板网站好还是自助建站好
  • 广州市建设职业培训学校网站aso推广平台
  • 网站建设实训个人总结3000营销策略方案
  • 食品电子商务网站建设方案网络营销与策划实践报告
  • 网店推广技巧海会网络做的网站怎么做优化