在 Python 中查找索引或局部峰值的程序
假设我们有一个名为nums的数字列表。我们必须找到nums中每个峰值元素的索引,按升序排序。当满足所有这三个条件时,峰值元素的索引i:1.其右侧与nums[i]不同的下一个数字不存在或必须小于nums[i]2.上一个数字与nums[i]不同的左边不存在或必须小于nums[i]3.其左侧或右侧至少有一个与nums[i]不同的数字。
所以,如果输入像nums=[5,8,8,8,6,11,11],那么输出将是[1,2,3,5,6],因为8s的平台被认为是峰[1,2,3]。11s也是,[5,6]。
示例
让我们看看以下实现以获得更好的理解-
def solve(nums):
n = len(nums)
ans = []
i = 0
while i < n:
i0 = i
while i < n and nums[i] == nums[i0]:
i += 1
if (i0 == 0 or nums[i0] > nums[i0 - 1]) and (i == n or nums[i0] > nums[i]):
if i0 != 0 or i != n:
ans.extend(range(i0, i))
return ans
nums = [5, 8, 8, 8, 6, 11, 11]
print(solve(nums))输入
[5, 8, 8, 8, 6, 11, 11]输出结果
[1, 2, 3, 5, 6]
热门推荐
10 旅行祝福语朋友文案简短
11 优美的西语祝福语简短
12 端午销售祝福语简短英文
13 和妈咪文案祝福语简短
14 老师祝福语简短谐音梗
15 文案配音生日祝福语简短
16 送别老外祝福语英文简短
17 祝老妈生日祝福语简短
18 送生日祝福语简短高级