在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e., Find the minimum element. The array may contain duplicates. Example 1: Input: [1,3,5] Output: 1 Example 2: Input: [2,2,2,0,1] Output: 0 Note:
假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 请找出其中最小的元素。 注意数组中可能存在重复的元素。 示例 1: 输入: [1,3,5] 输出: 1 示例 2: 输入: [2,2,2,0,1] 输出: 0 说明:
16ms 1 class Solution { 2 func findMin(_ nums: [Int]) -> Int { 3 var left = 0 4 var right = nums.count - 1 5 while left < right { 6 if nums[left] < nums[right] { return nums[left] } 7 let mid = (left + right) / 2 8 if nums[mid] < nums[left] { 9 right = mid 10 } else if nums[mid] > nums[right] { 11 left = mid + 1 12 } else { 13 right -= 1 14 } 15 } 16 return nums[left] 17 } 18 } 52ms 1 class Solution { 2 func findMin(_ nums: [Int]) -> Int { 3 let arraySize = nums.count 4 5 if arraySize == 1 { return nums[0] } 6 if arraySize == 2 { return min(nums[0], nums[1]) } 7 let midElement = arraySize / 2 8 if nums[midElement] > nums[arraySize-1] { 9 return findMin(Array(nums[midElement...arraySize-1])) 10 } else if nums[midElement] < nums[0] { 11 return findMin(Array(nums[0...midElement])) 12 } else { 13 return min(findMin(Array(nums[midElement...arraySize-1])), findMin(Array(nums[0...midElement]))) 14 } 15 } 16 } 60ms 1 class Solution { 2 func findMin(_ nums: [Int]) -> Int { 3 4 if nums.isEmpty { 5 return -1 6 } 7 8 if nums.count == 1 { 9 return nums[0] 10 } 11 12 var beigin = nums[0] 13 var i = 1 14 while i < nums.count { 15 if nums[i] >= beigin { 16 beigin = nums[i] 17 i += 1 18 } else { 19 return nums[i] 20 } 21 } 22 23 return nums[0] 24 } 25 } 76ms 1 class Solution { 2 func findMin(_ nums: [Int]) -> Int { 3 guard nums.count > 0 else { return -1 } 4 return nums.min()! 5 } 6 }
|
请发表评论