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

     
  • 相关阅读:
    237. Delete Node in a Linked List
    430. Flatten a Multilevel Doubly Linked List
    707. Design Linked List
    83. Remove Duplicates from Sorted List
    160. Intersection of Two Linked Lists
    426. Convert Binary Search Tree to Sorted Doubly Linked List
    142. Linked List Cycle II
    类之间的关系
    初始化块
    明确类和对象
  • 原文地址:https://www.cnblogs.com/LilyLiya/p/14835555.html
Copyright © 2011-2022 走看看