博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
739. Daily Temperatures
阅读量:6323 次
发布时间:2019-06-22

本文共 1260 字,大约阅读时间需要 4 分钟。

  hot3.png

Description

Tag:Stack, Hash Table

Difficulty: Medium

Given a list of daily temperatures T, return a list such that, for each day in the input, tells you how many days you would have to wait until a warmer temperature. If there is no future day for which this is possible, put 0 instead.

For example, given the list of temperatures T = [73, 74, 75, 71, 69, 72, 76, 73], your output should be [1, 1, 4, 2, 1, 1, 0, 0].

Note: The length of temperatures will be in the range [1, 30000]. Each temperature will be an integer in the range [30, 100].

Solution

从后向前,将大值压入栈中,在压栈过程中,将小值pop出去,然后依次查找即可。

type ele struct {     index int     temperature int} var stack []elevar top = -1func dailyTemperatures(T []int) []int {    size := len(T)    stack = make([]ele, size)    result := make([]int, size)    for i:= size -1; i>=0;i-- {        result[i] = find(T[i], i)        push(T[i], i)    }        return result}func find(t int, index int) int {    for i:=top; i>=0; i-- {        if stack[i].temperature > t {            return stack[i].index - index        }    }    return 0}func push(t int, i int) {    for top >=0 && stack[top].temperature <= t {        top--    }    top++    element := ele{i, t}    stack[top] = element}

转载于:https://my.oschina.net/liufq/blog/2961411

你可能感兴趣的文章
Lync Server单前端无边缘的外部访问思考
查看>>
C#中的位操作
查看>>
Win7如何设置虚拟WIFI共享上网
查看>>
Lotus notes/Domino 系统实施笔记 第一部分
查看>>
谈OSSIM服务器内存开销问题
查看>>
憨仔浏览器更新
查看>>
RHCE课程-RH253Linux服务器架设笔记一-VSFTPD的配置(2)
查看>>
Cisco交换机配置入门
查看>>
混合云数据库管理(HDM)统一管理云上和云下数据库
查看>>
SystemCenter2012SP1实践(30)P2V,从物理机迁移到虚拟机
查看>>
Linux中断(interrupt)子系统之五:软件中断(softIRQ)
查看>>
linux下使用线程锁互斥访问资源
查看>>
PureMVC(AS3)剖析:设计模式(二)
查看>>
认识k_BackingField
查看>>
【Javascript Demo】遮罩层和弹出层简单实现
查看>>
CentOS安装运行NodeJS框架Express
查看>>
Java Executors(线程池)
查看>>
【转】Python 代码调试技巧
查看>>
《博客园精华集》Sharepoint+MOSS分册第2轮筛选结果文章列表
查看>>
MHL技术剖析,比HDMI更强【转】
查看>>