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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

[nowCoder] 局部最小值位置

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [nowCoder] 局部最小值位置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定義局部最小的概念。arr長度為1時,arr[0]是局部最小。arr的長度為N(N>1)時,如果arr[0]<arr[1],那么arr[0]是局部最小;如果arr[N-1]<arr[N-2],那么arr[N-1]是局部最小;如果0<i<N-1,既有arr[i]<arr[i-1]又有arr[i]<arr[i+1],那么arr[i]是局部最小。
給定無序數組arr,已知arr中任意兩個相鄰的數都不相等,寫一個函數,只需返回arr中任意一個局部最小出現的位置即可。

?

分析:

如果arr[0]<arr[1],那么arr[0]是局部最小;--返回0

如果arr[N-1]<arr[N-2],那么arr[N-1]是局部最小;--返回1

如果arr[0]和arr[N-1]都不是,那么left = 1, right = N+2, mid =(left+right)/2

若arr[mid] < arr[mid+1]且 arr[mid]<arr[mid-1],則返回mid

否則必有arr[mid] < arr[mid+1]或arr[mid]<arr[mid-1],假設arr[mid] < arr[mid+1]

?

由于,arr[0]<arr[1],?arr[mid] < arr[mid+1] 則可知,arr[1]到arr[mid]比存在一個局部最小,如此反復迭代。時間復雜度O(lgn),比遍歷的O(n)要好。

http://www.nowcoder.com/profile/864393/test/231563/24592

?

class Solution
{public:int getLessIndex(vector<int> arr){  if(arr.size() == 0)return -1;if(arr.size() == 1)return 0;if(arr[0] < arr[1])return 0;int size = arr.size();if(arr[size - 1] < arr[size - 2])return size - 1;int low = 1;int high = size - 2;int mid;while(low < high){  mid = (low + high)/2;if(arr[mid] > arr[mid+1]){  low = mid+1;}  else if(arr[mid] > arr[mid-1]){  high = mid-1;}  elsereturn mid;}return low;}
};

?

轉載于:https://www.cnblogs.com/diegodu/p/4589781.html

總結

以上是生活随笔為你收集整理的[nowCoder] 局部最小值位置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。