五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

開始學(xué)算法(刷算法題)過程記錄 10

2022-05-12 20:39 作者:學(xué)途壓力大  | 我要投稿

題目描述:有一個(gè)長度為 n 的非降序數(shù)組,比如[1,2,3,4,5],將它進(jìn)行旋轉(zhuǎn),即把一個(gè)數(shù)組最開始的若干個(gè)元素搬到數(shù)組的末尾,變成一個(gè)旋轉(zhuǎn)數(shù)組,比如變成了[3,4,5,1,2],或者[4,5,1,2,3]這樣的。請問,給定這樣一個(gè)旋轉(zhuǎn)數(shù)組,求數(shù)組中的最小值。

本題考點(diǎn):考察了對二分查找的理解。變換了二分查找的條件,對二分查找不熟悉的可以看這篇文章:二分查找法。

解題思路:

首先需要了解旋轉(zhuǎn)數(shù)組的特點(diǎn),旋轉(zhuǎn)數(shù)組是將一個(gè)遞增排序數(shù)組,最開始的若干個(gè)元素搬到數(shù)組的末尾。例如:[1,2,3,4,5,6]他的旋轉(zhuǎn)數(shù)組可以是[4,5,6,1,2,3]、[2,3,4,5,6,1]、[6,1,2,3,4,5]等


我們拿[4,5,1,2,3]分析。

旋轉(zhuǎn)數(shù)組的第一個(gè)元素應(yīng)該大于等于最后一個(gè)元素。例如3>2

旋轉(zhuǎn)數(shù)組可以看做2個(gè)遞增的子數(shù)組,但是中間邊界的位置是不確定的。我們可以通過比大小的辦法來找出中間的邊界。

具體我們可以拿數(shù)組中間的值 同 第一個(gè)元素和最后一個(gè)元素比較。第一個(gè)元素4是前一個(gè)遞增序列的最小值。最后一個(gè)元素3是后一個(gè)遞增序列的最大值。我們可以利用這個(gè)特點(diǎn)區(qū)分中間的數(shù)屬于前序列還是后序列逐漸縮小范圍找出2個(gè)遞增序列的邊界

例如在這個(gè)[4,5,1,2,3]中

中間數(shù)1 小于最后一個(gè)數(shù)字3。由此可見他是屬于后面一個(gè)遞增序列的。所以我們把high指針移動(dòng)到1的位置上,重新選中間數(shù)。

中間數(shù)5 大于第一個(gè)數(shù)字4。由此可見他是屬于前一個(gè)遞增序列的。所以我們把low指針移動(dòng)到5的位置上。

在這種high-low==1的情況下,就意味著邊界找到了,此時(shí)high指針指的就是數(shù)組中最小的數(shù)。

但是當(dāng)遇到low == high == mid的情況 這個(gè)辦法就沒有用了。如下圖

無法通過比較端點(diǎn)值來判斷中間數(shù)位于哪一個(gè)遞增序列,只能順序查找。

算法實(shí)現(xiàn):

這題還可以用return Math.min(...Array)過。運(yùn)行時(shí)間也差不多,實(shí)際項(xiàng)目中應(yīng)該也是用這個(gè)。

開始學(xué)算法(刷算法題)過程記錄 10的評(píng)論 (共 條)

分享到微博請遵守國家法律
东城区| 余干县| 崇明县| 英山县| 洪雅县| 哈尔滨市| 克什克腾旗| 新津县| 额敏县| 邯郸县| 莆田市| 榆社县| 徐汇区| 区。| 隆尧县| 德惠市| 庆安县| 天水市| 澎湖县| 塘沽区| 高雄县| 万源市| 柳江县| 城口县| 乐昌市| 新泰市| 尤溪县| 安阳县| 温州市| 崇阳县| 新兴县| 梁山县| 定南县| 清镇市| 南召县| 凌海市| 星座| 攀枝花市| 无棣县| 临漳县| 高台县|