日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 153. Find Minimum in Rotated Sorted Array (在旋转有序数组中找到最小值)

發(fā)布時間:2023/12/13 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 153. Find Minimum in Rotated Sorted Array (在旋转有序数组中找到最小值) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

(i.e.,?0 1 2 4 5 6 7?might become?4 5 6 7 0 1 2).

Find the minimum element.

You may assume no duplicate exists in the array.

?


題目標簽:Array, Binary Search

  題目給了我們一個 旋轉有序 數(shù)組,讓我們找到最小值。如果是在還沒有旋轉的情況下,那么我們知道,最小值就是第一個數(shù)字。

  那么當遇到旋轉的情況呢,我們就需要找到那個 “斷點” 的兩個數(shù)字,換句話說,就是最大值和最小值,而且這兩個數(shù)字一定是相鄰的。

  我們來看一下例子:

  0 ?1 ?2 ?4 ?5 ?6 ?7  直接返回第一個數(shù)字

  1 ?2 ?4 ?5 ?6 ?7 ?0  返回7 和0 中小的那個數(shù)字

  2 ?4 ?5 ?6 ?7 ?0 ?1  

  4 ?5 ?6 ?7 ?0 ?1 ?2

  5 ?6 ?7 ?0 ?1 ?2 ?4

  6 ?7 ?0 ?1 ?2 ?4 ?5

  7 ?0 ?1 ?2 ?4 ?5 ?6

  利用二分法來找到 最大和最小的 兩個數(shù)字。

  rule 1: 如果 mid 小于 left, 意味著最大的數(shù)字在左邊,繼續(xù)去左邊找,把right = mid, 這里要包括mid,因為mid 可能是最小的數(shù)字;

  rule 2: 如果 mid 大于 right, 意味著最小的數(shù)字在右邊,繼續(xù)去右邊找,把left = mid, 這里要包括mid, 因為mid 可能是最大的數(shù)字。

  當left 和right 相鄰的時候,返回小的數(shù)字就可以了。

?

 

Java Solution:

Runtime beats 53.07%?

完成日期:08/30/2017

關鍵詞:Array, Binary search

關鍵點:旋轉中,min 和 max 必然是相鄰的,利用二分法找到min 和max

?

1 class Solution 2 { 3 public int findMin(int[] nums) 4 { 5 if(nums.length == 1) 6 return nums[0]; 7 8 int left = 0; 9 int right = nums.length - 1; 10 11 if(nums[left] < nums[right]) 12 return nums[0]; 13 14 while(left + 1 != right) 15 { 16 int mid = left + (right - left) / 2; 17 18 if(nums[mid] < nums[left]) // if left is greater than mid, move to left 19 right = mid; 20 else if(nums[mid] > nums[right]) // if mid one is greater than right, move to right 21 left = mid; 22 } 23 24 // if there are only two number 25 return Math.min(nums[left], nums[right]); 26 } 27 }

參考資料:N/A

?

LeetCode 算法題目列表 -?LeetCode Algorithms Questions List

?

轉載于:https://www.cnblogs.com/jimmycheng/p/7456345.html

總結

以上是生活随笔為你收集整理的LeetCode 153. Find Minimum in Rotated Sorted Array (在旋转有序数组中找到最小值)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。