编程题之Daily Temperatures

LeetCode原题地址

https://leetcode.com/problems/daily-temperatures/

题目介绍

Given an array of integers temperatures represents the daily temperatures, return an array answer such that answer[i] is the number of days you have to wait after the ith day to get a warmer temperature. If there is no future day for which this is possible, keep answer[i] == 0 instead.

Example 1:

Input: temperatures = [73,74,75,71,69,72,76,73]
Output: [1,1,4,2,1,1,0,0]
Example 2:

Input: temperatures = [30,40,50,60]
Output: [1,1,1,0]
Example 3:

Input: temperatures = [30,60,90]
Output: [1,1,0]

本能写法

public static int[] Calculte(int[] input)
{
var length = input.Length;
var result = new int[length];
for (int i = 0; i < length; i++)
{
for (int j = i + 1; j < length; j++)
{
if (input[j] > input[i])
{
result[i] = j - i;
break;
}
}
}
return result;
}

使用Stack降低复杂度

public static int[] DailyTemperatures(int[] input)
{
var length = input.Length;
int[] res = new int[length];
Stack<int> stack = new Stack<int>();
for (var i = 0; i < length; i++)
{
while (stack.Count != 0 && input[i] > input[stack.Peek()])
{
var top = stack.Pop();
res[top] = i - top;
}
stack.Push(i);
}
return res;
}
posted @   talentzemin  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示