class Solution(object):
def dailyTemperatures(self, T: 'List[int]') -> 'List[int]':
S = list()
n = len(T)
SR = [] * n
nexD =
for i in range(n):
t = T[i]
if len(S)==:
S.append(t)
else:
n2 = len(S)
for j in range(n2-,-,-):
preT = S[j]
nexD +=
if preT < t:
if SR[j] == :
SR[j] = nexD
else:
break nexD =
S.append(t)
return SR

补充另一种写法,效率更高:

 class Solution:
def dailyTemperatures(self, T: 'List[int]') -> 'List[int]':
res = [] * len(T)
for i in range(len(T)-, -, -):
n = i +
while T[i] >= T[n]:
if res[n] == :
break
n += res[n]
else:
res[i] = n - i
return res

自己重新写了一个:

 class Solution(object):
def dailyTemperatures(self, T: 'List[int]') -> 'List[int]':
n = len(T)
R = [] * n
for i in range(n-,-,-):
#print(i)
j = i +
while j < n:
if T[i] < T[j]:
R[i] = j - i
break
else:
if R[j] == :
break
else:
j += R[j]
return R

两层循环处理,下面给出解释:

第一层循环,从后向前,最后一个元素肯定标记为0,因为它是最后一个元素(废话)。

第二层循环,从倒数第二个元素开始判断,记录当前位置为i,其后面的元素为j,

如果j元素比i元素大,那么就对i进行标记,

如果j元素不比i元素大,那么就继续向后找。但是为了提高效率,这里不是将j++,因为已经可以“确定”比j元素大的下一个元素的位置了。

  如果j已经被标记为0,那么说明后面没有比j更大的元素了。j++也就没有意义了,因为不可能找到比i更大的元素,此时直接标记i为0。

  如果j不为0,那么直接比较i和下一个比j大的元素就可以了。中间可以跳过很多循环,从而提高了算法的效率。

leetcode739的更多相关文章

  1. [Swift]LeetCode739. 每日温度 | Daily Temperatures

    Given a list of daily temperatures T, return a list such that, for each day in the input, tells you ...

  2. Leetcode739 - Daily Temperatures

    题目描述 Leetcode 739 本题考察了栈的使用.题目输入是一段温度值列表,然后返回一个列表.这个列表包含了输入列表中每一天还有多少天温度升高.如果未来没有升高的情况,则输入 0. # Exam ...

  3. LeetCode739 每日温度

    根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数.如果之后都不会升高,请输入 0 来代替. 例如,给定一个列表 temperatures = [73, 74 ...

  4. 找工作面试题记录与参考资料(Golang/C++/计算机网络/操作系统/算法等)

    记录下去年(2020年)找工作的面试题及参考资料. C++ 智能指针的实现原理 多态的实现原理[2] C++11/14/17新特性[3] 手写memcpy和memmove[4] 介绍下boost库 计 ...

随机推荐

  1. TensorFlow中assign函数

    tf.assign assign ( ref , value , validate_shape = None , use_locking = None , name = None ) 定义在:tens ...

  2. CSS 实现单、多行文本溢出显示省略号(…)

    如果实现单行文本的溢出显示省略号同学们应该都知道用text-overflow:ellipsis属性来,当然还需要加宽度width属来兼容部分浏览. 实现方法: overflow: hidden; te ...

  3. 蓝牙协议分析(8)_BLE安全机制之白名单

    1. 前言 在万物联网的时代,安全问题将会受到非常严峻的挑战(相应地,也会获得最大的关注度),因为我们身边的每一个IOT设备,都是一个处于封印状态的天眼,随时都有被开启的危险.想想下面的场景吧: 凌晨 ...

  4. 自动化测试-19.selenium定位之通过JS修改html写入日期数据以及从文本读取数据实战

    # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.support.select import ...

  5. python+flask开发小白第二天

    使用VSCode编译python web页面 1.先从最基础的说起吧,关于VSCode的使用: 运行python程序与运行java,c,c++程序一样,需要新建一个文件,第一个文件建议不要新建在本地的 ...

  6. 13.python错误和异常

    一.错误和异常1.程序中的错误分为俩种:(1)语法错误:不按照语言的规则,必须在程序执行前就改正(2)逻辑错误2.异常就是程序运行时发生错误的信号,分为三部分(1)Traceback:异常追踪的信息( ...

  7. smartgit的安装

    smartgit是非常好用的一个图形化git工具,有Ubuntu版本的,直接去官网下载即可,但使用smartgit要求先jre. 直接去官网上下载jre:https://www.java.com/zh ...

  8. 10行代码使用python统计词频

    # -*- coding: utf-8 -*- #!/usr/bin/env python import re f = open("C:\\Users\\陶敏\\Documents\\Pys ...

  9. ajax 调用webservice 跨域问题

    注意两点 1. 在webservice的config中加入这段位置 (注意不是调用webservice的webconfig中加入) <system.webServer>     <! ...

  10. IntelliJ IDEA 2018.3 升级功能介绍

    |0前言 2018.11.28 IntelliJ IDEA 2018.3 正式版发布.对于一个忠实爱好者,迫不及待的我下载了最新版本来体验下.而且 IDEA 今年的第三次重大更新提供了不容错过的显著功 ...