最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

算法:旋轉(zhuǎn)數(shù)組的最小數(shù)字

2022-06-10 09:36 作者:做架構(gòu)師不做框架師  | 我要投稿


把一個(gè)數(shù)組最開始的若干個(gè)元素搬到數(shù)組的末尾,我們稱之為數(shù)組的旋轉(zhuǎn)。

給你一個(gè)可能存在 重復(fù) 元素值的數(shù)組 numbers ,它原來是一個(gè)升序排列的數(shù)組,并按上述情形進(jìn)行了一次旋轉(zhuǎn)。請返回旋轉(zhuǎn)數(shù)組的最小元素。例如,數(shù)組 [3,4,5,1,2] 為 [1,2,3,4,5] 的一次旋轉(zhuǎn),該數(shù)組的最小值為 1。

注意,數(shù)組 [a[0], a[1], a[2], ..., a[n-1]] 旋轉(zhuǎn)一次 的結(jié)果為數(shù)組 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。

示例1

  • 輸入:numbers = [3,4,5,1,2]

  • 輸出:1

示例2

  • 輸入:numbers = [2,2,2,0,1]

  • 輸出:0

提示

  • n == numbers.length

  • 1 <= n <= 5000

  • -5000 <= numbers[i] <= 5000

  • numbers 原來是一個(gè)升序排序的數(shù)組,并進(jìn)行了 1 至 n 次旋轉(zhuǎn)

算法:二分法

首先,從審題中我們了解到,

  • 條件一:“原來是一個(gè)升序排列的數(shù)組”,說明他是一個(gè)有順序的數(shù)組,即左邊的數(shù)小于等于右邊的數(shù)。

  • 條件二:“把最開始的若干個(gè)元素搬到數(shù)組末尾”,說明最小數(shù)字是在數(shù)組中,可以把旋轉(zhuǎn)后的數(shù)組理解為“兩個(gè)有序的數(shù)組”。

因?yàn)閿?shù)組是“可能存在重復(fù)”的,所以有兩種情況“不重復(fù)數(shù)組”和“重復(fù)數(shù)組”。

場景一:不重復(fù)數(shù)組

原數(shù)組:[1,2,3,4,5],經(jīng)過一次旋轉(zhuǎn)變?yōu)椋篬3,4,5,1,2]。

首先我們?nèi)≈虚g值 “5” 跟最右側(cè)的 “2” 比較,發(fā)現(xiàn) 5 > 2 ,說明數(shù)組中的最小值在中間值 “5” 的右側(cè),然后我們右側(cè)值取 “1” 跟中間值側(cè)的 “5” 比較,發(fā)現(xiàn) 1 < 5,即該值為最小值。

場景二:重復(fù)數(shù)組

原數(shù)組:[0,1,2,2,2],經(jīng)過一次旋轉(zhuǎn)變?yōu)椋篬2,2,2,0,1]。

首先我們?nèi)≈虚g值 “2” 跟最右側(cè)的 “1” 比較,發(fā)現(xiàn) 2 > 1,說明數(shù)組中的最小值在中間值 “2” 的右側(cè),然后我們右側(cè)值取 “0” 跟中間值側(cè)的 “2” 比較,發(fā)現(xiàn) 0 < 2,即該值為最小值。

代碼如下:

復(fù)雜度分析

  • 時(shí)間復(fù)雜度 :log以2為底n的對(duì)數(shù), 在特例情況下(例如 [1, 1, 1, 1]),會(huì)退化到 O(N)。

  • 空間復(fù)雜度 :O(1), low , high , pivot 變量使用常數(shù)大小的額外空間。

END

本文內(nèi)容出處是力扣官網(wǎng),希望和大家一起刷算法,在后面的路上不變禿但是變強(qiáng)!

好兄弟可以點(diǎn)贊并關(guān)注我的公眾號(hào)“javaAnswer”,全部都是干貨。


算法:旋轉(zhuǎn)數(shù)組的最小數(shù)字的評(píng)論 (共 條)

分享到微博請遵守國家法律
怀安县| 灯塔市| 浦江县| 登封市| 博客| 报价| 三亚市| 桑日县| 阿荣旗| 和顺县| 永新县| 郁南县| 克东县| 呼伦贝尔市| 观塘区| 舟山市| 扶沟县| 屏东县| 寻甸| 山东| 阜阳市| 涪陵区| 新绛县| 牙克石市| 西和县| 宁国市| 宿迁市| 通海县| 汉阴县| 德钦县| 清苑县| 河西区| 鹤岗市| 鸡东县| 镇康县| 秀山| 永胜县| 裕民县| 自治县| 贺兰县| 永宁县|