zoukankan      html  css  js  c++  java
  • [Swift]LeetCode153. 寻找旋转排序数组中的最小值 | Find Minimum in Rotated Sorted Array

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/10059760.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    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.

    Example 1:

    Input: [3,4,5,1,2] 
    Output: 1
    

    Example 2:

    Input: [4,5,6,7,0,1,2]
    Output: 0

    假设按照升序排序的数组在预先未知的某个点上进行了旋转。

    ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

    请找出其中最小的元素。

    你可以假设数组中不存在重复元素。

    示例 1:

    输入: [3,4,5,1,2]
    输出: 1

    示例 2:

    输入: [4,5,6,7,0,1,2]
    输出: 0

    12ms
     1 class Solution {
     2     func findMin(_ nums: [Int]) -> Int {
     3         if nums.count == 0 {
     4             return 0
     5         }
     6 
     7         var left = 0
     8         var right = nums.count - 1
     9 
    10         while left < right {
    11             let middle = left + (right - left) / 2
    12             if nums[middle] > nums[right] {
    13                 left = middle + 1
    14             } else {
    15                 right = middle
    16             }
    17         }
    18 
    19         return nums[left]
    20     }
    21 }

    16ms

     1 class Solution {
     2     func findMin(_ nums: [Int]) -> Int {
     3         
     4         if nums.count == 1{
     5             return nums[0]
     6         }
     7 
     8             if nums[0] > nums[nums.count-1]{
     9                 for i in 0..<(nums.count-1){
    10                     if nums[i] > nums[i+1] {
    11                         return nums[i+1]
    12                     } 
    13                 }
    14             }else{
    15                 return nums[0]
    16             }
    17             
    18         return -1
    19     }
    20 }

    24ms

     1 class Solution {
     2     
     3     func findMin(_ nums: [Int]) -> Int {
     4         var start = 0
     5         var end = nums.count - 1
     6         
     7         while start < end {
     8             if nums[start] < nums[end] {
     9                 return nums[start]
    10             }
    11             
    12             var mid = (start + end) / 2
    13             
    14             if nums[mid] >= nums[start] {
    15                 start = mid + 1
    16             }else {
    17                 end = mid
    18             }
    19         }
    20         
    21         return nums[start]
    22     }
    23     
    24     func findMin2(_ nums: [Int]) -> Int {
    25         for i in 1 ..< nums.count {
    26             if nums[i] < nums [i-1]{
    27                 return nums[i]
    28             }
    29         }
    30         
    31         return nums[0]
    32     }
    33 }

    28ms

     1 class Solution {
     2   func findMin(_ nums: [Int]) -> Int {
     3     var start = 0
     4     var end = nums.count - 1
     5     var gap = (end - start) / 2
     6     while (end - start) > 1 {
     7       if nums[gap] > nums[end] {
     8         start = gap
     9         gap = start + ((end - gap) / 2)
    10       }else if nums[gap] < nums[end]{
    11         end = gap
    12         gap = (end - start) / 2
    13       }
    14     }
    15     return nums[end] > nums[start] ? nums[start] : nums[end]
    16   }
    17 }
  • 相关阅读:
    bootstrap
    bootstrap
    IDEA 配置maven
    jQuery
    jQuery
    jQuery
    jQuery
    Jquery
    【k8s】Pod-metadata
    【k8s】terminationMessagePolicy
  • 原文地址:https://www.cnblogs.com/strengthen/p/10059760.html
Copyright © 2011-2022 走看看