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. ui自动化:python+appium----环境搭建

    前言: appium可以说是app最火的一个自动化框架,它的主要优势是支持android和ios,另外脚本支持java和python.以下为python+appium的安装教程... 环境准备... ...

  2. (转)Web.config配置文件详解

    花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <? ...

  3. Python基础05_str_补充

    继续学习中, 补充一些str 的索引.切片.长度.循环输出等. #!/usr/bin/env python # coding:utf-8 # 通过下标索引获取字符串中的某个字符 # 1. 索引 tes ...

  4. vue导出excel

    1.按装依赖 cnpm install -S file-saver xlsx cnpm install -D script-loader 2.引入Blob.js和expor2Excal.js 3.在m ...

  5. django 简易版搭建

    1.根目录下创建mysql.cnf文件 [client]database = identimguser = rootpassword = roothost = 127.0.0.1port = 3306 ...

  6. apache kylin总结

    去年12月挖的坑,今天找时间填上.update:20190119 一.kylin架构 核心是预计算,在此架构上做了一些优化.计算结果存储在Hbase,对Hive等查询转换为Hbase的Scan,提高速 ...

  7. 【Java】字符串工具类

    import android.annotation.SuppressLint; import java.io.UnsupportedEncodingException; import java.uti ...

  8. configparse模块和hashlib模块

    # import configparser # # config = configparser.ConfigParser() #config = {} # config['DEFAULT'] = {' ...

  9. message box

    QMessageBox 弹出框上的按钮设置为中文   Qt 默认的弹出框上的按钮式英文,虽然也知道是什么意思,但终究不如中文看着顺眼. QMessageBox box(QMessageBox::War ...

  10. Ubuntu16.04中安装搜狗输入法

    1.从搜狗输入法官网界面下载安装包 https://pinyin.sogou.com/linux/ 2.安装 sudo dpkg -i sogoupinyin_2.1.0.0082_amd64.deb ...