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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

《剑指offer》— JavaScript(6)旋转数组的最小数字

發布時間:2024/10/12 javascript 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《剑指offer》— JavaScript(6)旋转数组的最小数字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

旋轉數組的最小數字

題目描述

  把一個數組最開始的若干個元素搬到數組的末尾,我們稱之為數組的旋轉。
  輸入一個非遞減排序的數組的一個旋轉,輸出旋轉數組的最小元素。例如數組{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該數組的最小值為1。
  NOTE:給出的所有元素都大于0,若數組大小為0,請返回0。


實現代碼

function minNumberInRotateArray(rotateArray) {var len = rotateArray.lengthif (len == 0){return 0}else{ var low = 0;var high = len-1;while(low<high){var mid = low + Math.floor((high - low) / 2); if(rotateArray[mid] > rotateArray[high]){low = mid + 1;}else if(rotateArray[mid] == rotateArray[high]){high = high - 1;}else{high = mid;} }return rotateArray[low];}}

思路

  旋轉之后的數組實際上可以劃分成兩個有序的子數組:前面子數組的大小都大于后面子數組中的元素,實際上最小的元素就是兩個子數組的分界線。

  • 我們用兩個指針low和high分別指向數組的第一個元素和最后一個元素。按照題目的旋轉的規則,第一個元素應該是大于等于最后一個元素的;但是如果不是旋轉,第一個元素肯定小于或等于最后一個元素。

  • 找到數組的中間元素。中間元素大于最后一個元素,則中間元素位于前面的遞增子數組,此時最小元素位于中間元素的后面。我們可以讓第一個指針low指向中間元素。

  • 中間元素小于最后一個元素,則中間元素位于后面的遞增子數組,此時最小元素位于中間元素的前面。我們可以讓第二個指針high指向中間元素。

  • 中間元素等于最后一個元素,則將第二個指針向前移,然后繼續比較。

  • 轉載于:https://www.cnblogs.com/echovic/p/6430643.html

    總結

    以上是生活随笔為你收集整理的《剑指offer》— JavaScript(6)旋转数组的最小数字的全部內容,希望文章能夠幫你解決所遇到的問題。

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