• 154. Find Minimum in Rotated Sorted Array II


    package LeetCode_154
    
    /**
     * 154. Find Minimum in Rotated Sorted Array II
     * https://leetcode.com/problems/find-minimum-in-rotated-sorted-array-ii/
     *
     * 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.
    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. This is a follow up problem to Find Minimum in Rotated Sorted Array.
    2. Would allow duplicates affect the run-time complexity? How and why?
     * */
    class Solution {
        /*
       * solution: Divide and conquer, check left side and right side of array,
       * Time complexity: O(logn), because at least half of array is sorted,
       * Space complexity: O(logn), there are logn levels recursion,
       * */
        fun findMin(nums: IntArray): Int {
            return findMin(nums, 0, nums.size - 1)
        }
    
        private fun findMin(nums: IntArray, left: Int, right: Int): Int {
            //if just one or two elements
            if (left == right) {
                return nums[left]
            }
            //is sorted, because array contains duplicate, so cannot check if equals
            if (nums[left] < nums[right]) {
                return nums[left]
            }
            //compare left and right side
            val mid = left + (right - left) / 2
            val leftSide = findMin(nums, left, mid)
            val rightSide = findMin(nums, mid + 1, right)
            return Math.min(leftSide, rightSide)
        }
    }
  • 相关阅读:
    LeetCode_1.Two Sum
    F#周报2018年第48期
    使用Kdenlive为视频加入马赛克特效
    网络安全从入门到精通(第一章)前言篇
    hdu 5023 线段树染色问题
    poj 2528 线段树离散化+染色
    字符Hash初步
    经典二分:秦腾与教学评估
    国王游戏
    Trie:hdu 4825、1251、1247、Poj 3764
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13912270.html
Copyright © 2020-2023  润新知