首页 > 试题广场 >

寻找最后的山峰

[编程题]寻找最后的山峰
  • 热度指数:4237 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

山峰元素是指其值大于或等于左右相邻值的元素。给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引。

假设 nums[-1] = nums[n] = -∞。


输入描述:

在命令行中输入一行数字,数字之间以空格分割,遇到换行符结束。输入的数字为整型,且总数量在10万以内。



输出描述:

输出索引最大的山峰的索引值(一个数字)

示例1

输入

2 4 1 2 7 8 4

输出

5

说明

索引最大的山峰的高度为8,其索引为5
 
a = [18,12,1,2,7,14,119]
b = []
if len(a) <= 1:
    b.append(a[i])
else:
    if a[0]>a[1]:
        b.append(a[0])
    for i in range(1,len(a)-1):
        if a[i-1]<=a[i] and a[i+1]<=a[i]:
            b.append(a[i])
    if a[-1]>a[-2]:
        b.append(a[-1])
# print(b)
for j in range(len(a)):
    if a[j] == max(b):
        print(j)

发表于 2023-06-20 23:19:43 回复(0)
题目虽然很简单,但要考虑的细节一旦遗漏,case就不通过了,附python3代码
nums = list(map(int, input().split()))
lon = len(nums)
# 先判断数组长度
if lon <= 1:
    max_pos = 0
else:
    # 第一个数和最后一个数只要判断一边就可以
    if nums[0] > nums[1]:
        max_pos = 0
    for i in range(1,len(nums)-1):
        if nums[i-1] < nums[i] and nums[i+1] < nums[i]:
            max_pos = i
    if nums[-1] > nums[-2]:
        max_pos = len(nums)-1
print(max_pos)



编辑于 2020-08-17 12:55:28 回复(0)
import sys
n = list(map(int,sys.stdin.readline().strip().split(' ')))
peak=max(n)
for i in range(len(n)):
    if n[i]==peak:
        print i
发表于 2020-04-20 16:59:49 回复(0)
def peakIndex(arr):
    arr.insert(0,float('-inf'))
    arr.append(float('-inf'))
    res = []
    for i in range(1,len(arr)-1):
        if arr[i]>= arr[i-1] and arr[i]>=arr[i+1]:
            res.append(i-1)
    return max(res)

if __name__ == '__main__':
    arr = list(map(int,input().split()))
    print(peakIndex(arr))

发表于 2020-03-19 17:53:44 回复(7)