网站建设情况总结,个人静态网页学生作业,刘家窑网站建设,搭建网站干什么Python后面的文章#xff0c;内容都比较多#xff0c;但是同时我又想保持每天更新的速度#xff0c;所以Python的文章我继续打磨打磨#xff0c;先更新一篇算法的文章。 一身正气报国家#xff0c;旁无乱境不恋她 ヾ(◍∇◍)#xff89;#xff9e; 力扣题号#xff1a…Python后面的文章内容都比较多但是同时我又想保持每天更新的速度所以Python的文章我继续打磨打磨先更新一篇算法的文章。 一身正气报国家旁无乱境不恋她 ヾ(◍°∇°◍) 力扣题号739. 每日温度 - 力扣LeetCode
下述题目描述和示例均来自力扣
题目描述 给定一个整数数组 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: 输入: temperatures [30,40,50,60]
输出: [1,1,1,0]示例 3: 输入: temperatures [30,60,90]
输出: [1,1,0] 提示 1 temperatures.length 10530 temperatures[i] 100 上嘴脸
思路
Java解法一直接暴力
这里直接两层for循环挨个找就行
class Solution {public int[] dailyTemperatures(int[] temperatures) {int length temperatures.length;int[] answer new int[length];for (int i 0; i length; i) {int far 1;for (int j i 1; j length; j) {if (temperatures[i] temperatures[j]){answer[i] far;break;}else {far;}}}return answer;}
}
但是不好意思超时了 因为没过我就不提供另外的语法了
Java解法二栈
这里我们可以采用一个栈来记录之前的温度记录的是低温然后遍历数组发现如果今天的温度大于栈顶存储的温度则将今天温度的数组下标和栈顶的相减获得天数差值然后存入answer数组即可。 class Solution {public int[] dailyTemperatures(int[] temperatures) {public int[] dailyTemperatures(int[] temperatures) {// 记录数组长度int length temperatures.length;// 准备需要返回的数组int[] answer new int[length];// 准备一个栈来存储DequeInteger stack new LinkedList();for (int i 0; i length; i) {// 获取每次的温度int temperature temperatures[i];// 若栈不为空而且当前温度大于栈顶的温度这里会一直查找弹出栈获取下标差值while (!stack.isEmpty() temperature temperatures[stack.peek()]) {// 获取栈顶元素int preIndex stack.pop();// 取得下标差值写入answer数组answer[preIndex] i - preIndex;}// 存入栈stack.push(i);}return answer;}
} C解法二栈
class Solution {
public:vectorint dailyTemperatures(vectorint temperatures) {int length temperatures.size();vectorint answer(length);stackint stack;for(int i 0; i length; i){int temperature temperatures[i];while(!stack.empty() temperature temperatures[stack.top()]){int preIndex stack.top();answer[preIndex] i - preIndex;stack.pop();}stack.push(i);}return answer;}
};
对于C比Java算法题跑的慢这个事情我已经习以为常了。 Python解法二栈
class Solution:def dailyTemperatures(self, temperatures: List[int]) - List[int]:length len(temperatures)# python的列表初始化answer [0] * lengthstack []for i in range(length):temperature temperatures[i]while stack and temperature temperatures[stack[-1]]:prev_index stack.pop()answer[prev_index] i - prev_indexstack.append(i)return answer 果然是发展越来越好的语言速度越来越快了奥
结语
就这样
再见ヾ(▽)Bye~Bye~