山峰元素是指其值大于或等于左右相邻值的元素。给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引。
假设 nums[-1] = nums[n] = -∞。
山峰元素是指其值大于或等于左右相邻值的元素。给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引。
假设 nums[-1] = nums[n] = -∞。
在命令行中输入一行数字,数字之间以空格分割,遇到换行符结束。输入的数字为整型,且总数量在10万以内。
输出索引最大的山峰的索引值(一个数字)
2 4 1 2 7 8 4
5
索引最大的山峰的高度为8,其索引为5
import pandas as pd def max_mountain_index(a): b = len(a) - 1 x=[] y=[] for i in range(1, b): right_position = a[i] left = a[i - 1] right = a[i + 1] if right_position > left: if right_position > right: d = i e = right_position x.append(i)#索引 y.append(e)#值 else: continue # print(d, e) z=pd.Series(y,x) print(z) print("最后的山峰为:",z.max(),"对应的索引为:",z.idxmax()) a = [2,6,8,2,5,2,7,3,9,10,12,6,4,0,8,1,5,9] A = max_mountain_index(a)
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))
def mountain_peak(a): b =len(a) -1 for i in range(1,b): right_position = a[i] left = a[i-1] right = a[i+1] if right_position > left: if right_position > right: d = i e = right_position else: continue print(d,e) a = [1, 3, 5, 17, 4, 6, 15, 3,9,7,9,6,8,5] A = mountain_peak(a)
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)
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)
nums = [1, 2, 5, 3, 4, 2] lon = len(nums) index = [] # 先判断数组长度 if lon <= 1: index = 0 else: # 第一个数和最后一个数只要判断一边就可以 if nums[0] > nums[1]: index = 0 for i in range(1, len(nums)-1): if nums[i-1] < nums[i] and nums[i+1] < nums[i]: index.append(i) if nums[-1] > nums[-2]: index.append(len(nums)-1) # 因为多个山峰,所以取出最大值山峰的index for j in range(0, len(index)): if nums[index[j - 1]] < nums[index[j]]: max_index = index[j] # print(index) print(max_index, nums[max_index])
import sys if __name__ == "__main__": nums = sys.stdin.readline() ss = list(map(int, nums.split())) index = [] for i in range(len(ss)): if i == 0: if ss[0] > ss[1]: index.append(0) if i != 0 and i != len(ss) - 1: if ss[i] > ss[i + 1] and ss[i] > ss[i - 1]: index.append(i) if i == len(ss) - 1: if ss[i] > ss[i - 1]: index.append(i) print(index[-1])
到底咋越界了呀?我服了
num = list(map(int,input().split())) jizhi = [] for i in range(1,len(num)): if i != len(num)-1: if num[i] >= num[i-1] and num[i] >= num[i+1]: jizhi.append(i) else: if num[i] >= num[i-1]: jizhi.append(i) a = max(jizhi) print(a)case通过率未75%,报错为可能存在非法错误,没有给出实际输出和对应参考,不清楚哪里有问题,还请各路大神指点
C++
#include <vector> #include <iostream> using namespace std; int solution(vector<int>&input){ //其实元素位置和最后的元素位置单独讨论 int len = input.size(); if(input[len-1] >= input[len-2]) return len-1; int res; bool flag = false; for(int i = 1; i < input.size()-1; i++){ if(input[i] >= input[i-1] && input[i] >= input[i+1]){ res = i; flag = true; } } if(flag == false) return 0; return res; } int main(void){ int number; vector<int> input; while(cin >> number){ input.push_back(number); } cout << solution(input) << endl; return 0; }
data = readLines('stdin') data = strsplit(data,split = " ") data = as.numeric(unlist(data)) x = length(data) peak = matrix(ncol = 3,nrow = x) data = c(-Inf,data,-Inf) peak[,1] = diff(data)[-(x+1)] peak[,2] = diff(data)[-1] peak[,3] = 0 peak[peak[,1]>0 & peak[,2]<0,] = 1 cat(max(which(peak[,3] == 1))-1)R语言解法。因为有时间限制,所以一个循环都不能用,用了就超时=,=
array = list(map(int, input().split())) array.insert(0, float('-inf')) array.append(float('-inf')) array1 = list(reversed(array)) print(array,'\n',array1) for i in range(1, len(array1)-1): if array1[i-1]<=array1[i] and array1[i+1]<=array1[i]: print(len(array1)-2-i)#-2是由于array1和array之间的元素个数差 break else: continue