五月天青色头像情侣网名,国产亚洲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)論 (共 條)

分享到微博請遵守國家法律
佛山市| 西丰县| 柘荣县| 益阳市| 区。| 静宁县| 绥棱县| 镇远县| 军事| 杂多县| 勃利县| 高邑县| 天台县| 威海市| 故城县| 长葛市| 祁东县| 喀什市| 深州市| 林芝县| 清水县| 上林县| 天峻县| 迁安市| 万州区| 平泉县| 临沧市| 滨州市| 甘谷县| 资中县| 贵南县| 潼关县| 元氏县| 合水县| 青河县| 黄平县| 扎鲁特旗| 利川市| 綦江县| 舟山市| 扬中市|