#!/usr/bin/env python # -*-coding:utf-8 -*- import re # 问题同宝石 时间负责度较高 def peakIndexInMountainArray(s): sp = s.split(',') numbers = list(map(int, sp)) if len(numbers) < 3 or len(numbers) > 10000: print('长度有误 ,重新输入 ') exit(0) print(numbers.index(max(numbers))) # 格式 为:1,2,3 st = input("请输入数字,以半角逗号分隔 ,数字不能少于3个或大于10000个 ") if not re.search('^[0-9,]+$', st): print('match error,repeat reinput ') exit(0) peakIndexInMountainArray(st) # 二分查找 时间复杂度logn的版本 def peakIndexInMountainArray(mountain): height = len(mountain) low = 0 while low <= height: mid = (height + low) // 2 if array[mid] > array[mid - 1] and array[mid] > array[mid + 1]: print(mid) break elif array[mid] > array[mid + 1]: height = mid - 1 else: low = mid + 1 array = [0, 1, 0] peakIndexInMountainArray(array) array = [0, 2, 1, 0] peakIndexInMountainArray(array) array = [0, 1, 2, 3, 7, 6, 5, 4, 2, 1, 0] peakIndexInMountainArray(array) array = [0, 1, 2, 7, 6, 5, 4, 0] peakIndexInMountainArray(array)