国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C > 正文

求解旋轉(zhuǎn)數(shù)組的最小數(shù)字

2020-01-26 14:07:20
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

求解旋轉(zhuǎn)數(shù)組的最小數(shù)字

題目描述:

把一個(gè)數(shù)組最開(kāi)始的若干個(gè)元素搬到數(shù)組的末尾,我們稱之為數(shù)組的旋轉(zhuǎn)。輸入一個(gè)遞增排序的數(shù)組的一個(gè)旋轉(zhuǎn),輸出旋轉(zhuǎn)數(shù)組的最小數(shù)組。例如數(shù)組{3,4,5,1,2}是數(shù)組{1,2,3,4,5}的旋轉(zhuǎn)數(shù)組,該數(shù)組的最小值為1。

思路解析:

O(N)的算法

這種算法的思想就是遍歷這個(gè)數(shù)組,由于這個(gè)數(shù)組是兩部分有序的數(shù)組,因此遍歷這個(gè)數(shù)組時(shí)當(dāng)后一個(gè)數(shù)字小于前一個(gè)數(shù)字時(shí),則后一個(gè)(即較小)一定為整個(gè)數(shù)組中最小的數(shù)字。

這種算法的思想很簡(jiǎn)單,但就是時(shí)間復(fù)雜度較大,因此不是很好的算法。

int minNumberInRotateArray(vector<int> rotateArray){  if (rotateArray.empty())    return -1;  unsigned int i=0;  for (; i<rotateArray.size()-1; i++)  {    if (rotateArray[i] > rotateArray[i+1])      break;  }  return rotateArray[i+1];}

O(logN)的算法

這種算法思想類似于二分查找,首先每次找到數(shù)組中中間的數(shù)字mid,如果mid大于最左端left,說(shuō)明最小數(shù)在mid的右側(cè)區(qū)間,則改變left,置left為mid;如果mid小于數(shù)組右側(cè)right,說(shuō)明最小數(shù)在mid的左側(cè)區(qū)間,則改變r(jià)ight為mid….當(dāng)left的數(shù)字小于等于right的數(shù)字時(shí),說(shuō)明已經(jīng)找到最小數(shù),這個(gè)也是循環(huán)結(jié)束的條件

int minNumberInRotateArray(vector<int> rotateArray){  if (rotateArray.empty())    return -1;  unsigned int left=0;  unsigned int right=rotateArray.size()-1;  unsigned int mid=left;  while (rotateArray[left] >= rotateArray[right])  {    if (right-left == 1)    {      mid = right;      break;    }    mid = left+((right-left)>>1);    if (rotateArray[mid]==rotateArray[left] && rotateArray[right]==rotateArray[mid])      return rotateArray[mid];    if (rotateArray[mid] >= rotateArray[left])      left = mid;    else if (rotateArray[mid] <= rotateArray[right])      right = mid;  }  return rotateArray[mid];}

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 和平县| 张家港市| 新绛县| 菏泽市| 广西| 钟祥市| 秭归县| 怀集县| 台东县| 许昌市| 牙克石市| 双辽市| 司法| 宝丰县| 青岛市| 东莞市| 江口县| 南江县| 封开县| 新昌县| 牙克石市| 华阴市| 山东| 东源县| 滦南县| 天等县| 闻喜县| 亳州市| 阿拉善左旗| 高碑店市| 宾川县| 临汾市| 曲沃县| 铁力市| 吉首市| 固阳县| 万源市| 曲周县| 冀州市| 无棣县| 清镇市|