zoukankan      html  css  js  c++  java
  • Largest range

    refer to: https://www.algoexpert.io/questions/Largest%20Range

    Problem Statement

     

     Analysis

    The most naive way, sort the array, then check the largest range, need O(nlogn) time complexity

     Code

    # step 1: store all the values in hashmap
    # step 2: iterate all the values in the array, for each value, check the range related to this value, how to check? check if the left/right number contains in the hashmap or not.
    # if in the hashmap, set the value of that key in the hashmap to False(visited), then we don't need to recheck those False values
    def largestRange(array):
        # Write your code here.
        bestRange = []
        longestLength = 0
        nums = {} # create a hashmap to store all the values, 
        
        for num in array:
            nums[num] = True # initialize all to True(all values do not have been touched at first
        for num in array:
            if not nums[num]:
                continue # if set to false, the value has been explored, do nothing
            nums[num] = False  # now, the current value is being explored
            currentLength = 1 # the currentLength is itself
            left = num - 1
            right = num + 1
            while left in nums:
                nums[left] = False
                currentLength += 1
                left -= 1 # continue to explore the range from right to left
            while right in nums:
                nums[right] = False
                currentLength += 1
                right += 1 # continue to expolre the range from left to right
                
            if currentLength > longestLength:
                longestLength = currentLength
                bestRange = [left + 1, right - 1] # at the end of the two while loops, right has been plus 1, left has been minus 1, need to restore the real values of left and right
        return bestRange

    Time complexity: O(n) one pass for creating a hashmap, another pass for traversing each value in the array

    Space complexity: O(n) store the hashmap

    n is the length of the input array

     
  • 相关阅读:
    LeetCode:Remove Duplicates from Sorted List
    LeetCode:Remove Nth Node From End of List
    LeetCode:Delete Node in a Linked List
    LeetCode:Rotate Image
    LeetCode:Anagrams(字母颠倒)
    LeetCode:Single NumberⅡ
    LeetCode:Single Number
    LeetCode:Longest Common Prefix
    bzoj1025
    bzoj1024
  • 原文地址:https://www.cnblogs.com/LilyLiya/p/14835555.html
Copyright © 2011-2022 走看看