日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lintcode_75.寻找峰值

發(fā)布時(shí)間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lintcode_75.寻找峰值 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

你給出一個(gè)整數(shù)數(shù)組(size為n),其具有以下特點(diǎn):

  • 相鄰位置的數(shù)字是不同的
  • A[0] < A[1] 并且 A[n - 2] > A[n - 1]

假定P是峰值的位置則滿足A[P] > A[P-1]且A[P] > A[P+1],返回?cái)?shù)組中任意一個(gè)峰值的位置。

樣例

給出數(shù)組[1, 2, 1, 3, 4, 5, 7, 6]返回1, 即數(shù)值 2 所在位置, 或者6, 即數(shù)值 7 所在位置.

題意實(shí)際應(yīng)該是找任意一個(gè)極大值

class Solution:"""@param: A: An integers array.@return: return any of peek positions."""def findPeak(self, A):# write your code hereif len(A)<2:return A
for i in range(1,len(A)-1):if (A[i+1]-A[i]) < 0:return i

時(shí)間復(fù)雜度O(n),Time Limit Exceeded

考慮二分法,九章參考:

class Solution:#@param A: An integers list.#@return: return any of peek positions.def findPeak(self, A):# write your code herestart, end = 1, len(A) - 2while start + 1 < end:mid = (start + end) / 2if A[mid] < A[mid - 1]:end = midelif A[mid] < A[mid + 1]:start = midelse:end = mid #直接return mid就行,不用再找了if A[start] < A[end]:return endelse:return start

一開始覺得不對,仔細(xì)審題發(fā)現(xiàn)還有約束

  • A[0] < A[1] 并且 A[n - 2] > A[n - 1]

?

只用考慮中間點(diǎn)局部范圍則可以找到某峰值的區(qū)間。

轉(zhuǎn)載于:https://www.cnblogs.com/zhangli-ncu/p/8032034.html

總結(jié)

以上是生活随笔為你收集整理的lintcode_75.寻找峰值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。