leetcode739
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的更多相关文章
- [Swift]LeetCode739. 每日温度 | Daily Temperatures
Given a list of daily temperatures T, return a list such that, for each day in the input, tells you ...
- Leetcode739 - Daily Temperatures
题目描述 Leetcode 739 本题考察了栈的使用.题目输入是一段温度值列表,然后返回一个列表.这个列表包含了输入列表中每一天还有多少天温度升高.如果未来没有升高的情况,则输入 0. # Exam ...
- LeetCode739 每日温度
根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数.如果之后都不会升高,请输入 0 来代替. 例如,给定一个列表 temperatures = [73, 74 ...
- 找工作面试题记录与参考资料(Golang/C++/计算机网络/操作系统/算法等)
记录下去年(2020年)找工作的面试题及参考资料. C++ 智能指针的实现原理 多态的实现原理[2] C++11/14/17新特性[3] 手写memcpy和memmove[4] 介绍下boost库 计 ...
随机推荐
- ui自动化:python+appium----环境搭建
前言: appium可以说是app最火的一个自动化框架,它的主要优势是支持android和ios,另外脚本支持java和python.以下为python+appium的安装教程... 环境准备... ...
- (转)Web.config配置文件详解
花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <? ...
- Python基础05_str_补充
继续学习中, 补充一些str 的索引.切片.长度.循环输出等. #!/usr/bin/env python # coding:utf-8 # 通过下标索引获取字符串中的某个字符 # 1. 索引 tes ...
- vue导出excel
1.按装依赖 cnpm install -S file-saver xlsx cnpm install -D script-loader 2.引入Blob.js和expor2Excal.js 3.在m ...
- django 简易版搭建
1.根目录下创建mysql.cnf文件 [client]database = identimguser = rootpassword = roothost = 127.0.0.1port = 3306 ...
- apache kylin总结
去年12月挖的坑,今天找时间填上.update:20190119 一.kylin架构 核心是预计算,在此架构上做了一些优化.计算结果存储在Hbase,对Hive等查询转换为Hbase的Scan,提高速 ...
- 【Java】字符串工具类
import android.annotation.SuppressLint; import java.io.UnsupportedEncodingException; import java.uti ...
- configparse模块和hashlib模块
# import configparser # # config = configparser.ConfigParser() #config = {} # config['DEFAULT'] = {' ...
- message box
QMessageBox 弹出框上的按钮设置为中文 Qt 默认的弹出框上的按钮式英文,虽然也知道是什么意思,但终究不如中文看着顺眼. QMessageBox box(QMessageBox::War ...
- Ubuntu16.04中安装搜狗输入法
1.从搜狗输入法官网界面下载安装包 https://pinyin.sogou.com/linux/ 2.安装 sudo dpkg -i sogoupinyin_2.1.0.0082_amd64.deb ...