成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

LeetCode題解之旋轉數組的數字

開發 前端
把一個數組最開始的若干個元素搬到數組的末尾,我們稱之為數組的旋轉。輸入一個遞增排序的數組的一個旋轉,輸出旋轉數組的最小元素。例如,數組 [3,4,5,1,2] 為 [1,2,3,4,5] 的一個旋轉,該數組的最小值為1。

[[377700]]

前言

今天繼續算法題:旋轉數組的最小數字

題目:旋轉數組的最小數字

把一個數組最開始的若干個元素搬到數組的末尾,我們稱之為數組的旋轉。輸入一個遞增排序的數組的一個旋轉,輸出旋轉數組的最小元素。例如,數組 [3,4,5,1,2] 為 [1,2,3,4,5] 的一個旋轉,該數組的最小值為1。

示例 1:

輸入:[3,4,5,1,2] 輸出:1 示例 2:

輸入:[2,2,2,0,1] 輸出:0

解法一

首先找到題目的提干:

遞增排序數組(可以重復),旋轉,最小元素

也就是一個遞增數組,將一部分移動到數組尾部,比如:

  1. [1,2,3,4,5] 
  2. //旋轉之后 
  3. [3,4,5,1,2] 

找到其中的最小數字。

那么我們很容易想到的第一中解法就是遍歷數組,然后找到某一個數字比它前面一個數字小的時候,那么這個數字就是我們要找的最小數字。

因為正常來說都是后面數字大于前數字,所以出現小于前數字,那么就是這個旋轉數組的分界點,也就是最小數字了。

  1. class Solution { 
  2.     public int minArray(int[] numbers) { 
  3.         for(int i=0;i<numbers.length-1;i++){ 
  4.             if(numbers[i]>numbers[i+1]){ 
  5.                 return numbers[i+1]; 
  6.             } 
  7.         } 
  8.         return numbers[0]; 
  9.     } 

方法消耗情況

以后不寫這個了。由于每次測試用例不同,造成的結果也相差太大,沒有參考性。

時間復雜度

遍歷一次數組,所以時間復雜度為O(n)

空間復雜度

沒有用到另外的空間,所以空間復雜度為O(1)

解法二

二分法。

有的人可能會疑惑,二分法不是用來查找順序數組的嗎,這個旋轉之后也算嗎?

我們回顧下二分法的關鍵點就是:

取任意一個關鍵數字,都能通過判斷 來確定在我們要的值在哪個區間(關鍵數字的前后)。

那么在我們的旋轉數組中,能做到這一點嗎?

比如我們取中間值a和最后值b,如果a大于b,就說明這個分界值在這a和b之間,a之前的數據是正確排序的。

如果a小于b,說明分界值在a之前,a到b之間的數據是正確排序的。

比如剛才的[3,4,5,1,2],中間值5大于最后的值2,說明分界值在5和2之間,也就是1了。

  1. class Solution { 
  2.     public int minArray(int[] numbers) { 
  3.         int left=0; 
  4.         int right=numbers.length-1; 
  5.         //二分法查找條件 
  6.         while(left<right){ 
  7.             //找到中間點 
  8.             int mid=left+(right-left)/2; 
  9.             if(numbers[mid]<numbers[right]){ 
  10.                 right=mid; 
  11.             }else if(numbers[mid]>numbers[right]){ 
  12.                 left=mid+1; 
  13.             }else
  14.                 right--; 
  15.             } 
  16.         } 
  17.         return numbers[left]; 
  18.     } 

其中right=mid,left=mid+1的原因是因為,當numbers[mid]

而numbers[mid]>numbers[right]的情況下,mid不可能為最小,所以設置為mid+1。

時間復雜度

二分法最壞情況:

n/(2的x次方)=1,x=long2n。所以時間復雜度為O(longn)

還有一種情況是所有元素全部相同,這種情況下每次都執行right-1,所以時間復雜度為O(n)

空間復雜度

沒有用到另外的空間,所以空間復雜度為O(1)

參考

https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/submissions/

本文轉載自微信公眾號「 碼上積木」,可以通過以下二維碼關注。轉載本文請聯系 碼上積木公眾號。

 

責任編輯:武曉燕 來源: 碼上積木
相關推薦

2021-07-06 07:01:35

旋轉數組數字

2021-01-14 08:23:15

LeetCode變量

2021-01-21 08:23:29

鏈表單鏈表循環鏈表

2021-03-12 08:19:20

數組跳躍游戲

2021-02-04 08:18:53

LeetCode鏈表

2021-01-15 08:19:26

二維數組LeetCode

2021-12-01 09:00:57

LeetCode回文數字算法

2021-12-14 09:01:01

LeetCode整數羅馬數字

2021-12-15 09:00:53

LeetCode 羅馬數字整數

2021-03-22 08:23:29

LeetCode二叉樹節點

2021-01-28 08:20:41

鏈表空間復雜度

2021-03-02 08:21:58

LeetCode括號

2021-02-03 13:23:42

鏈表倒數結點

2013-05-21 10:42:48

Android游戲開發Bitmap位圖旋轉

2017-11-13 09:38:30

數字化CIO轉型

2009-11-25 09:13:41

PHP數組轉字符串PHP字符串轉數組

2017-03-01 13:58:46

Python數據結構鏈表

2021-03-17 08:19:22

二叉樹LeetCode

2024-09-24 18:45:39

數據倉庫數據中臺數據科技

2023-09-08 09:38:59

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美亚洲视频 | 国产精品久久久久一区二区三区 | 成人福利在线观看 | 欧美日韩在线免费观看 | aaa精品 | 国产精品一区二区三区在线 | 国产精品精品视频一区二区三区 | 最新中文字幕第一页视频 | 美国av片在线观看 | 亚洲性视频 | 麻豆av片 | 亚洲精品福利在线 | 日韩精品一区二区三区 | 最新毛片网站 | 鲁一鲁资源影视 | 亚洲视频免费在线播放 | 99久久国产综合精品麻豆 | 精品乱码一区二区三四区视频 | 欧美高清一区 | 成年人的视频免费观看 | 成人午夜激情 | 成人毛片在线观看 | 久久久久久高潮国产精品视 | 精品视频在线播放 | 精品久久一区 | 视频一区二区三区中文字幕 | 久草热在线 | 色伊人网 | 国产中文一区二区三区 | www国产亚洲精品久久网站 | 青草视频在线 | 91精品国产91久久综合桃花 | 日韩伦理一区二区 | 精品欧美激情精品一区 | 91社区在线观看高清 | 综合久久av | 中文字幕av高清 | 亚洲日韩中文字幕一区 | 国产 日韩 欧美 在线 | 国产四虎 | 一区二区三区小视频 |