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

怎么写网站头部和尾部平台推广费用

怎么写网站头部和尾部,平台推广费用,网站建设与运营 就业,vue 做企业网站1.题目链接: 739. 每日温度 - 力扣(LeetCode) 2.题目描述: 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温…

1.题目链接:

739. 每日温度 - 力扣(LeetCode)

2.题目描述:

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。

示例 1:


输入: temperatures = [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]
示例 2:

示例 2:

输入: temperatures = [30,40,50,60]
输出: [1,1,1,0]

示例 3:

输入: temperatures = [30,60,90]
输出: [1,1,0]

提示:

1 <= temperatures.length <= 105
30 <= temperatures[i] <= 100

3.解题思路:

这段代码采用了栈的思路,通过栈来解决“每日温度升高问题”。首先,定义一个栈 stk 来存储温度的索引,用于追踪尚未找到升高温度的天数。将第一个温度的索引 0 入栈,确保能在后续遍历时找到初始索引。接着,定义一个 res 数组,用来记录每一天到下一次温度升高的天数,初始化为 0。接下来,从第二天开始遍历 temperatures 数组,对于每一天的温度,如果当前温度大于栈顶所指向的温度,就说明当前天的温度升高了,计算从栈顶所指向的那一天到当前天的天数,并更新 res 数组,同时将栈顶元素弹出。然后继续检查下一个栈顶元素,直到栈为空或者当前温度不再高于栈顶的温度。最后,将当前天的索引压入栈中,以便后续比较。通过这种方式,栈中的每个元素都会在找到一个升高的温度后被处理,最终返回 res 数组,得到每一天到下一次温度升高的天数。

4.题解代码:

class Solution {
public:vector<int> dailyTemperatures(vector<int>& temperatures) {stack<int>stk;//定义一个栈 stk,用来存储索引。这个栈的作用是帮助我们追踪每天的温度的下标stk.push(0);//将第一个温度的索引 0 入栈。这里的设计其实是为了确保我们能在后面开始的循环中找到初始的索引vector<int>res(temperatures.size(),0);//定义一个大小与输入 temperatures 相同的 vector<int> 数组 res,并且初始化为 0。这个数组用来存储答案,其中 res[i] 代表从第 i 天开始,经过多少天温度会升高。如果没有升高,值就是 0。for(int i=1;i<temperatures.size();i++)//从第二天开始遍历 temperatures 数组,i 是当前遍历的天数,循环会遍历到最后一天{while(!stk.empty()&&temperatures[i]>temperatures[stk.top()])//检查栈中的索引所指向的温度是否小于当前温度//如果栈不为空,且当前的温度大于栈顶的温度,那么说明当前天的温度比栈顶的温度高,我们可以计算出这个温度升高的天数。{res[stk.top()]=i-stk.top();//计算从栈顶所指的那一天到当前天 i 的温度升高的天数,并更新 res 数组stk.pop();//一旦计算出从栈顶的某一天到当前天的温度升高的天数,就弹出栈顶的元素,继续检查下一个栈顶元素}stk.push(i);//将当前天 i 的索引压入栈中,以便在后续的循环中比较当前天的温度与栈中的其他天的温度}return res;}
};

5.示例演算:

输入:[73,74,75,71,69,72,76,73]

当前索引(i)当前温度栈内容(索引)操作更新后的res
174[0]74>73 → res[0]=1-0=1
弹出0 → 栈空
[1,0,0,0,0,0,0,0]
174压入1[1,0,0,0,0,0,0,0]
275[1]75>74 → res[1]=2-1=1
弹出1 → 栈空
[1,1,0,0,0,0,0,0]
275压入2[1,1,0,0,0,0,0,0]
371[2]71<75 → 无操作
压入3
[1,1,0,0,0,0,0,0]
469[2,3]69<71 → 无操作
压入4
[1,1,0,0,0,0,0,0]
572[2,3,4]72>69 → res[4]=5-4=1
弹出4 → 栈[2,3]
[1,1,0,2,1,0,0,0]
572[2]72<75 → 压入5[1,1,0,2,1,0,0,0]
676[2,5]76>72 → res[5]=6-5=1
弹出5 → 栈[2]
[1,1,4,2,1,1,0,0]
676压入6[1,1,4,2,1,1,0,0]
773[6]73<76 → 压入7[1,1,4,2,1,1,0,0]


6.复杂度计算:

时间复杂度:每个元素最多被推入和弹出栈一次,故时间复杂度是O(n)

空间复杂度:使用了一个栈和一个与输入数组大小相同的结果数组,故空间复杂度为O(n) 

7.拓展:如何修改算法以返回距离最近更高温度的天数

反向遍历温度数组,并记录每个温度最后出现的位置,通过比较温度差值寻找最接近的更高温度。

#include <vector>
#include <climits>
using namespace std;vector<int> dailyTemperatures(vector<int>& temperatures) {int n = temperatures.size();vector<int> res(n, 0);  // 初始化结果数组vector<int> minIndex(101, INT_MAX);  // 温度范围[30,100]的索引表// 反向遍历温度数组for (int i = n - 1; i >= 0; i--) {int t = temperatures[i];int candidateIndex = INT_MAX;  // 候选位置// 查找最接近的更高温度 (t+1 → 100)for (int temp = t + 1; temp <= 100; temp++) {if (minIndex[temp] != INT_MAX) {// 优先选择温度差最小且下标最小的位置if (candidateIndex == INT_MAX || (minIndex[temp] - i) < (candidateIndex - i)) {candidateIndex = minIndex[temp];}break;  // t+1是可能的最小差值,后续温度差值更大}}// 更新结果if (candidateIndex != INT_MAX) {res[i] = candidateIndex - i;}// 更新当前温度的索引minIndex[t] = i;}return res;
}

http://www.dtcms.com/wzjs/233557.html

相关文章:

  • 购物网站含有哪些模块如何推广平台
  • 云南网站定制开发谷歌关键词优化怎么做
  • 安徽集团网站建设免费广告投放网站
  • 搜索引擎优化方法案例杭州seo排名公司
  • 收费网站建设软文写作实训总结
  • 做类似淘宝一样的网站短视频seo关键词
  • 什么是网站建设的基础品牌推广公司
  • 峨眉山网站建设搜索引擎优化什么意思
  • 南宁有做校园门户网站的吗今日国际新闻
  • 网站设计英语html静态网页制作
  • 网站建设优化网站排名网络营销推广微信hyhyk1效果好
  • 新乡公司做网站找哪家公司好衡水网站优化推广
  • 办公用品网站建设如何快速推广一个app
  • 电子商务网站html模板seo收费还是免费
  • 专门做招商的网站站长统计 站长统计
  • 怎么样的网站合适做城市代理免费手机网页制作
  • 石材企业网站源码电脑优化软件哪个好用
  • 页面访问维护韶山百度seo
  • 微信二维码网站建设如何在百度上做产品推广
  • 网站设计方案范本百度seo找哪里
  • 成都专业网站制作建设官方百度app下载
  • 大庆信息网seo优化操作
  • 网站怎样做没有病毒网页制作网站制作
  • 美妆网站开发背景广东又出现新病毒
  • 新疆生产建设兵团血站网站潍坊关键词优化平台
  • 东莞市网站建设平台全媒体运营师报考条件
  • bootstrap构建自己的网站软文营销怎么做
  • 如何更换网站服务商抖音营销推广方案
  • 怎样做网站上的语种链接杭州seo推广优化公司
  • 长沙 网站设计 公司价格百度发作品入口在哪里