Python:每日一题 225
别别别说我鸽,我是真没题了...今天的每日一题,需要想一想,而且不能超时...
根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。
例如,给定一个列表 temperatures = ,你的输出应该是 。
提示:气温 列表长度的范围是 。每个气温的值的均为华氏度,都是在 范围内的整数。
这道题,我可能是做对了,但是超时了...
所以我后面再看看,看看能不能改进改进,超时版:
**** Hidden Message *****
题目比较晦涩难懂 本帖最后由 塔利班 于 2019-7-22 09:17 编辑
def mid(a,L):
for i,e in enumerate(L):
if e>a:
return i+1
return 0
def fun225(x):
res=[]
for i,e in enumerate(x):
res.append(mid(e,x))
print(res)
fun225()
我开始想的复杂度应该差不多应该也是O(N2),有没有O(N)的呢。。
看一下隐藏内容,题目没怎么看懂 哦,我懂了,最先没看明白是什么意思 楼主说的超时指的什么,就是这个列表的运行结果时间有限制还是什么? 我给大家解释一下楼主的意思,楼主说的就是有一个列表 ,然后从73开始找到第一个大于73的间隔数,所以74就找到了,中间间隔1,然后依次类推。所以结果就是,所以气温不气温的全是浮云,只是增加迷惑项 @flamer @zsc198945 fan1993423 发表于 2019-7-22 10:32
楼主说的超时指的什么,就是这个列表的运行结果时间有限制还是什么?
有时间限制 塔利班 发表于 2019-7-22 09:10
我开始想的复杂度应该差不多应该也是O(N2),有没有O(N)的呢。。
科普一下复杂度是什么意思 temperatures =
i = 1 #记录几位
list1 = []
for no, each in enumerate(temperatures):
try:
if each < temperatures:
list1.append(i)
i = 1
while each >= temperatures:
i += 1
no += 1
if each < temperatures:
list1.append(i)
i = 1
break
except:
list1.append(0)
print(list1) 晓屁屁 发表于 2019-7-22 14:22
执行结果:解答错误
输入:
输出
预期结果
塔利班 发表于 2019-7-22 09:10
我开始想的复杂度应该差不多应该也是O(N2),有没有O(N)的呢。。
我再想想 新手·ing 发表于 2019-7-22 15:15
执行结果:解答错误
输入:
我改一下
新手·ing 发表于 2019-7-22 15:15
执行结果:解答错误
输入:
temperatures =
i = 1 #记录几位
list1 = []
for no, each in enumerate(temperatures):
try:
if each < temperatures:
list1.append(i)
i = 1
while each >= temperatures:
i += 1
no += 1
if each < temperatures:
list1.append(i)
i = 1
break
except:
list1.append(0)
i = 1
print(list1)
计数器,重置一下就好了 fan1993423 发表于 2019-7-22 13:41
科普一下复杂度是什么意思
就是实现这个逻辑的工作量。参考彩票,如果从33个数中选一个号码,那么中奖概率是1/33.但是如果从33个号码中选取6个再加上篮球号码,概率就是1/1770万。就是实现这个逻辑组合的工作量。 晓屁屁 发表于 2019-7-22 15:36
计数器,重置一下就好了
喜提超时 新手·ing 发表于 2019-7-22 15:44
喜提超时
{:5_99:}啊哈哈 晓屁屁 发表于 2019-7-22 15:45
啊哈哈
看看,能不能再改进一下吧 本帖最后由 fallout.nj 于 2019-7-22 16:27 编辑
不知道对不对,我知道20分钟做出答案肯定是超时了。
def func(temperatures=[]):
result = []
lens = len(temperatures)
for i in range(0, lens):
for j in range(i, lens):
if temperatures - temperatures < 0:
result.append(j - i)
break
if len(result) < i+1:
result.append(0)
return result
修改一下,之前的有逻辑错误,现在正确了。运行超时这里我记得有个库,可以提高运行效率的 fallout.nj 发表于 2019-7-22 15:55
不知道对不对,我知道20分钟做出答案肯定是超时了。
和我想的一样,所以超时了