<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?LeetCode刷題實戰(zhàn)153:尋找旋轉(zhuǎn)排序數(shù)組中的最小值

          共 792字,需瀏覽 2分鐘

           ·

          2021-01-14 14:25

          算法的重要性,我就不多說了吧,想去大廠,就必須要經(jīng)過基礎(chǔ)知識和業(yè)務邏輯面試+算法面試。所以,為了提高大家的算法能力,這個公眾號后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

          今天和大家聊的問題叫做?尋找旋轉(zhuǎn)排序數(shù)組中的最小值,我們先來看題面:
          https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/

          Suppose an array of length n sorted in ascending order is rotated between 1 and n times. For example, the array nums = [0,1,2,4,5,6,7] might become:

          [4,5,6,7,0,1,2] if it was rotated 4 times.


          Notice that rotating an array [a[0], a[1], a[2], ..., a[n-1]] 1 time results in the array [a[n-1], a[0], a[1], a[2], ..., a[n-2]].


          Given the sorted rotated array nums, return the minimum element of this array.


          題意


          假設(shè)按照升序排序的數(shù)組在預先未知的某個點上進行了旋轉(zhuǎn)。例如,數(shù)組 [0,1,2,4,5,6,7] 可能變?yōu)?[4,5,6,7,0,1,2] 。

          請找出其中最小的元素。

          提示:

          1 <= nums.length <= 5000
          -5000 <= nums[i] <= 5000
          nums 中的所有整數(shù)都是 唯一 的
          nums 原來是一個升序排序的數(shù)組,但在預先未知的某個點上進行了旋轉(zhuǎn)

          樣例

          示例 1:

          輸入:nums = [3,4,5,1,2]
          輸出:1

          示例 2:

          輸入:nums = [4,5,6,7,0,1,2]
          輸出:0

          示例 3:

          輸入:nums = [1]
          輸出:1



          解題


          思路:二分查找


          本題要明確的一個要點是最小值一定出現(xiàn)在有旋轉(zhuǎn)點的那一側(cè)
          那么每次搜索我們都需要找到被旋轉(zhuǎn)的那一側(cè)區(qū)間,然后比較選擇元素小的那一側(cè)區(qū)間,那么可以將這兩個條件合并nums[mid] < nums[right],當此條件符合時,被旋轉(zhuǎn)區(qū)間一定在左側(cè),小的元素也一定在左側(cè)
          終止條件:當搜索區(qū)間大小為1時,停止搜索,并返回此元素 。

          public?int?findMin(int[] nums)?{
          ????int?left = 0;
          ????int?right = nums.length - 1;
          ????while(left < right){
          ????????int?mid = left + (right - left) / 2;
          ????????if(nums[mid] < nums[right]){
          ????????????right = mid;
          ????????}else{
          ????????????left = mid + 1;
          ????????}
          ????}
          ????return?nums[left];
          }



          好了,今天的文章就到這里,如果覺得有所收獲,請順手點個在看或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動力。

          上期推文:

          LeetCode1-140題匯總,希望對你有點幫助!
          LeetCode刷題實戰(zhàn)141:環(huán)形鏈表
          LeetCode刷題實戰(zhàn)142:環(huán)形鏈表 II
          LeetCode刷題實戰(zhàn)143:重排鏈表
          LeetCode刷題實戰(zhàn)144:二叉樹的前序遍歷
          LeetCode刷題實戰(zhàn)145:二叉樹的后序遍歷
          LeetCode刷題實戰(zhàn)146:LRU 緩存機制
          LeetCode刷題實戰(zhàn)147:對鏈表進行插入排序
          LeetCode刷題實戰(zhàn)148:排序鏈表
          LeetCode刷題實戰(zhàn)149:直線上最多的點數(shù)
          LeetCode刷題實戰(zhàn)150:逆波蘭表達式求值
          LeetCode刷題實戰(zhàn)151:翻轉(zhuǎn)字符串里的單詞
          LeetCode刷題實戰(zhàn)152:乘積最大子數(shù)組


          瀏覽 10
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美淫秽在线视频 | 久久电影天堂蜜桃 | 国产精品国产三级国产 | 黄色视频大全在线观看 | 三年无码一区二区三区 |