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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

剑指offer(12)旋转数组的最小数字

發布時間:2023/12/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指offer(12)旋转数组的最小数字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

思路:總的來說左邊的數組大于右邊的數,用折半查找法,找到倆個字數組的分界點

import java.util.ArrayList; public class Solution {public int minNumberInRotateArray(int [] array) {//一個數組的首指針和最后的指針和中間指針int index1 = 0;int index2 = array.length-1;int indexMid = index1+(index1+index2)/2;//跳出循環的條件是while(true){if(index2-index1==1){indexMid = index2;break;}//如果出現三個數相等的情況,那只能逐個比較if(array[index1]==array[index2]&&array[index1]==array[indexMid]){int result = array[index1];for(int i=1;i<array.length;i++){if(array[i]<result)result = array[i];}return result;}//計算中間的值indexMid = index1+(index2-index1)/2;//如果中間的數大于第一個數,指針右移if(array[indexMid]>=array[index1])index1 = indexMid;//如果中間的數小于末尾的數,指針左移if(array[indexMid]<=array[index2])index2 = indexMid;}//return array[indexMid];} }

?

總結

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

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