首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么有毒植物堆叠溶液给TLE?

为什么有毒植物堆叠溶液给TLE?
EN

Stack Overflow用户
提问于 2016-05-13 00:24:31
回答 1查看 327关注 0票数 0

试图解决黑客等级问题。

花园里有植物。这些植物中的每一种都添加了一定量的杀虫剂。每天之后,如果任何一种植物比左边的植物含有更多的杀虫剂,比左边的植物弱,那么它就会死亡。您将得到每种植物中农药的初始值。打印没有植物死亡的天数,即没有比植物左边的植物含有更多农药的时间。

我用堆栈来解决这个问题。例子如下:

代码语言:javascript
运行
复制
a = 6 5 8 4 7 10 9

10 > 9   a = 6 5 8 4 7 10    b = 9

7 > 10   a = 6 5 8 4 7       b = 9

4 > 7    a = 6 5 8 4         b = 9

8 > 4    a = 6 5 8           b = 9 4

5 > 8    a = 6 5             b = 9 4

6 > 5    a = 6 5             b = 9 4

在此之后,只需使用a = a + b.reverse()创建一个新列表。重新启动进程,并在列表按反向顺序排序时退出。

这给我的时间还是超过了。有什么想法吗?

代码语言:javascript
运行
复制
n = int(input())
first_list = input().split()
first_list = [int(i) for i in first_list]
count = 0
second_list = []
data_1, data_2 = 0, 0
while True:
  b = []
  if sorted(first_list, reverse=True) == first_list:
    break
  data_1 = first_list.pop()
  for i in range(len(first_list)-1):
    data_2 = first_list.pop() 
    if data_1 > data_2:
      pass
    elif data_1 < data_2:
      second_list.append(data_1)
    elif data_1 == data_2:
      second_list.append(data_1)
      second_list.append(data_2)
    data_1 = data_2
  if len(first_list)>=1 and data_1 < first_list[0]:
    first_list.append(data_1)
  second_list.reverse()
  first_list = first_list + second_list
  count += 1
print(count)

编辑代码:

代码语言:javascript
运行
复制
n = int(input())
input = [int(i) for i in input().split()]
count, t_length = 0, 0
cmp = input[0]
while True:
  length = len(input)
  for i in range(1, length):
    if input[i] == -1:
      t_length += 1
      continue
    if input[i] > cmp:
      cmp = input[i]
      input[i] = -1
    else:
      t_length += 1
      cmp = input[i]
  if t_length+1 == length:
    break  
  count += 1
  cmp, t_length = input[0], 0
print(count)
EN

回答 1

Stack Overflow用户

发布于 2016-05-13 02:13:53

排序是N log N,您的数据结构在我看来是错误的。为什么不使用双链接列表,因为它的要求是它是最左边的邻居。你可以简单地取消对死去的指针的尊重。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37199445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档