- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
题目是解决 Sedgewick Wayne 的 Python 书中的以下问题:
给定一个整数数组,编写一个程序,找出最长的连续等值序列的长度和位置,其中该序列前后元素的值较小。
我试过这个问题,遇到了一些问题。
这是我的代码:
import sys
import stdio
# Ask the user input for the list of integers
numList = list(sys.argv[1])
maxcount = 0
value = None
location = None
i = 1
while i < len(numList) - 1:
resList = []
count = 0
# If i > i-1, then we start taking i into the resList
if numList[i] > numList[i - 1]:
# start counting
resList += [numList[i]]
# Iterating through the rest of the numbers
j = i + 1
while j < len(numList):
# If the j element equals the i, then append it to resList
if numList[i] == numList[j]:
resList += [numList[j]]
j += 1
elif numList[i] < numList[j]:
# if j element is greater than i, break out the loop
i = j
break
else:
# if j element is smaller than i, count equals length of resList
count = len(resList)
if count > maxcount:
maxcount = count
value = resList[1]
location = i
i = j
else:
# if not greater than the previous one, increment by 1
i += 1
stdio.writeln("The longest continuous plateau is at location: " + str(location))
stdio.writeln("Length is: " + str(maxcount))
stdio.writeln("Number is: " + str(value))
结果显示:
python exercise1_4_21.py 553223334445554
The longest continuous plateau is at location: 11
Length is: 3
Number is: 5
python exercise1_4_21.py 1234567
The longest continuous plateau is at location: None
Length is: 0
Number is: None
但是不知何故,如果给定的列表的格式是一组大于前一个的连续整数,但随后这组列表结束时后面没有整数,我的程序就不会结束。 ...
exercise1_4_21.py 11112222111444
Traceback (most recent call last):
File "exercise1_4_21.py", line 32, in <module>
if numList[i] == numList[j]:
KeyboardInterrupt
exercise1_4_21.py 111222211112223333
Traceback (most recent call last):
File "exercise1_4_21.py", line 25, in <module>
if numList[i] > numList[i - 1]:
KeyboardInterrupt
不太确定逻辑错误在哪里...非常感谢您的帮助和好意!
最佳答案
您似乎使解决方案过于复杂(但正确选择了关键案例)。
它只需要单次运行列表。
def maxplat(l):
if (len(l)==0):
return 0, 0
start, leng = 0, 1
maxlen, maxstart = 0, 1
for i in range(1, len(l) + 1):
if (i == len(l)) or (l[i] < l[i-1]):
if (leng > maxlen):
maxlen, maxstart = leng, start
elif (l[i] == l[i-1]):
leng += 1
else:
start, leng = i, 1
return maxlen, maxstart
#test cases
print(maxplat([])) #empty case
print(maxplat([3])) #single element
print(maxplat([3,2,4,4,2,5,5,5,3])) #simple case
print(maxplat([3,2,4,4,2,5,5,5,6])) #up after long run
print(maxplat([3,2,4,4,2,5,5,5])) #run at the end
print(maxplat([3,3,3,3,2,4,4,2])) #run at the start
>>>
(0, 0)
(1, 0)
(3, 5)
(2, 2)
(3, 5)
(4, 0)
关于Python:Longest Plateau Problem:找到最长连续等值序列的长度和位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52346223/
我使用 Pandas 作为数据库替代品,因为我有多个数据库( Oracle 、 SQL Server 等),并且我无法将一系列命令与 SQL 等效。 我在 DataFrame 中加载了一个包含一些列的
使用 dimensional-tf 时包,是否可以使用“普通”Num 实例(即 Int、Double、Integer),而无需使用一个单元? 例如,此代码不进行类型检查(在 ghci 中): {-#
我有很多这样的陈述: INSERT INTO app.organization (name, org_type) VALUES ($1, $2) 在我的代码中。我想捕获它,将其粘贴到
我有很多这样的陈述: INSERT INTO app.organization (name, org_type) VALUES ($1, $2) 在我的代码中。我想捕获它,将其粘贴到
我正在使我的应用与平板电脑兼容,并且我正在尝试了解实现此目的的最佳方式。 我有一个 GridView,每个图像下面都有图像和文本。目前每张图片的高度都设置为 120dp 而不是 wrap_conten
我对 MongoDB 非常陌生,并且使用 jupyter 笔记本从 mongodb 中提取数据。我正在尝试获取 MongoDB 中的前 100 个文档,并且我确实有一种仅获取 100 个文档的粗略方法
我的代码, class User(db.Model, UserMixin): uid = db.Column(db.Integer, primary_key=True) username =
我正在尝试在我的本地机器上启动我的 PostgreSQL 服务器。但是我收到一条错误消息: FATAL: could not create shared memory segment: Invali
我正在使用基于 C++ 的程序,但它有自己的语法。例如,这是我将变量 x 设置为等于 2 的方式: x() = 2; 我从外部文件中读入变量及其初始值。数据存储在两个 vector 中。 vector
我是一名优秀的程序员,十分优秀!