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

网站优化公司哪家好网站菜单代码

网站优化公司哪家好,网站菜单代码,马蹄室内设计网站,网站建设的价钱下一个更大元素 II 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数&…

下一个更大元素 II

给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。

数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1 。

示例 1:

输入: nums = [1,2,1]
输出: [2,-1,2]
解释: 第一个 1 的下一个更大的数是 2;
数字 2 找不到下一个更大的数; 
第二个 1 的下一个最大的数需要循环搜索,结果也是 2。

示例 2:

输入: nums = [1,2,3,4,3]
输出: [2,3,4,-1,4]

思路:

        /*

            单调栈

            定义一个result用来存下标,和一个栈st用来存元素下标,首先栈先存入数组的第一个元素,从数组的第二个元素element开始比较,

            if(element<=nums[st.top()]) st.push(i);

            else{

                while(!st.empty()&&nums[i]>nums[st.top()]){

                result[st.top()] = i;

                st.pop();

            }

            st.push(i);

            }

            对于循环搜索

            for(int i = 0;i<nums.size()*2;i++)类似遍历两遍

            i= i%nums.size();求模不至于访问数组越界

        */

代码:
class Solution {
public:vector<int> nextGreaterElements(vector<int>& nums) {/*单调栈定义一个result用来存下标,和一个栈st用来存元素下标,首先栈先存入数组的第一个元素,从数组的第二个元素element开始比较,if(element<=nums[st.top()]) st.push(i);else{while(!st.empty()&&nums[i]>nums[st.top()]){result[st.top()] = i;st.pop();}st.push(i);}对于循环搜索for(int i = 0;i<nums.size()*2;i++)类似遍历两遍i= i%nums.size();求模不至于访问数组越界*/vector<int>result(nums.size(),-1);stack<int>st;st.push(0);for(int i = 1;i<nums.size()*2;i++){if(nums[i%nums.size()]<=nums[st.top()]){st.push(i%nums.size());}else{while(!st.empty()&&nums[i%nums.size()]>nums[st.top()]){result[st.top()] = nums[i%nums.size()];st.pop();}}st.push(i%nums.size());}return result;}
};

42. 接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

示例 1:

输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 

示例 2:

输入:height = [4,2,0,3,2,5]
输出:9

思路:

        /*

            采用单调栈

            定义一个栈 用来存下标,首先先把数组的第一个元素下标存入栈,然后从数组的第二个元素开始遍历

            遍历到的元素如果小于栈顶元素,就把该元素的下标存入栈

            遍历到的元素如果大于栈顶元素,就把栈顶元素下标取出记录比该元素大的第一个元素的下标,这个过程是持续性的过程。

            以上就是单调栈

            本题可以找到栈顶元素的比其右边大的元素,即遍历到的元素,左边遍历到的大的元素,即栈顶的下一个元素

           

        */

代码:
class Solution {
public:int trap(vector<int>& height) {/*采用单调栈 定义一个栈 用来存下标,首先先把数组的第一个元素下标存入栈,然后从数组的第二个元素开始遍历遍历到的元素如果小于栈顶元素,就把该元素的下标存入栈遍历到的元素如果大于栈顶元素,就把栈顶元素下标取出记录比该元素大的第一个元素的下标,这个过程是持续性的过程。以上就是单调栈本题可以找到栈顶元素的比其右边大的元素,即遍历到的元素,左边遍历到的大的元素,即栈顶的下一个元素*/stack<int>st;st.push(0);int sum = 0;for(int i = 1;i<height.size();i++){if(height[i]<height[st.top()]){st.push(i);}else if(height[i]==height[st.top()]){st.push(i);}else{while(!st.empty()&&height[i]>height[st.top()]){int mid = st.top();st.pop();if(!st.empty()){ int heigh = min(height[i],height[st.top()])-height[mid];int width = i-st.top()-1;sum += heigh*width;}}}st.push(i);}return sum;}
};

还有很多瑕疵,还需继续坚持!

http://www.yayakq.cn/news/106657/

相关文章:

  • 旅游网站管理系统源码电影vip网站建设步骤
  • 东莞市电商网站建设618酒类网站源码
  • 聚美优品网站建设方案购买网站建设合同协议模板
  • 厦门海沧区建设局网站网页设计软件视频教程
  • 做众筹网站怎么赚钱吗淘宝客免费网站建设
  • 电子商务网站建设的一般专门做推荐的网站
  • 看网站有没有做404网站怎么做图片转链
  • 做阿里巴巴跟网站哪个更好企业信息平台系统
  • 网站开发工程师需要具备的综合素质做赚钱的网站
  • 石家庄网站建设招聘台州网站建设公司
  • 网站开发搜索功能怎么实现免费域名网站php
  • 乐清市网站建设公司长沙seo行者seo09
  • 农产品电商网站建设的主要工作开发一个软件流程
  • 校园网站建设的优点食品包装设计的相关介绍
  • 免费建站模板怎样做国外电子商务网站
  • 备案 网站名称怎么写线上分销平台
  • 网站解析要多久班级博客网站模板
  • 易语言可以做网站官方网站平台下载
  • 网站如何进行seo网站访问量统计代码怎么做
  • 加强门户网站建设知名企业创新案例
  • 廊坊门户网站上海建设工程监督总站网站
  • 网站建设的7种流程图现在还有做静态网站的
  • 网站开发服务税率是多少wordpress设置图片
  • 网站开发建设专业的公司千万不要去电商公司上班
  • 一起学网站培训心得湖北勘察设计协会网站
  • 广州网站建设专家平台网站建设意见征求表
  • 在线做h5 的网站中国手表网站
  • 关于行业网站建设意见17网一起做网店普宁
  • 如何自学制作网站企业宣传方案模板
  • 福建设计招聘网站建设网站需要的配置