Closest Numbers

Sort by

recency

|

111 Discussions

|

  • + 0 comments
    def closestNumbers(arr):
        # Write your code here
        arr.sort()
        l1 = []
        mini = abs(arr[0]-arr[1])
        for i in range(len(arr)-1):
            if abs(arr[i]-arr[i+1])<mini:
                mini = abs(arr[i]-arr[i+1])
        for i in range(len(arr)-1):
            if abs(arr[i]-arr[i+1]) == mini:
                l1.append(arr[i])
                l1.append(arr[i+1])
        return l1
    
  • + 0 comments

    Rust best solution

    If you’re looking for solutions to the 3-month preparation kit in either Python or Rust, you can find them below: my solutions

    fn closest_numbers(arr: &[i32]) -> Vec<i32> {
        //Time complexity: O(n*log(n))
        //Space complexity (ignoring input): O(n)
        let mut arr = arr.to_vec();
        arr.sort_unstable();
    
        let mut minimun_value = arr[1] - arr[0];
        let mut pairs = vec![arr[0], arr[1]];
        for index in 2..arr.len() {
            if (arr[index] - arr[index - 1]) == minimun_value {
                pairs.push(arr[index - 1]);
                pairs.push(arr[index]);
            }
            if (arr[index] - arr[index - 1]) < minimun_value {
                minimun_value = arr[index] - arr[index - 1];
                pairs = vec![arr[index - 1], arr[index]];
            }
        }
        pairs
    }
    
  • + 0 comments

    Python best solution

    If you’re looking for solutions to the 3-month preparation kit in either Python or Rust, you can find them below: my solutions

    def closest_numbers(arr):
        # Time complexity: O(n*log(n))
        # Space complexity (ignoring input): O(n)
        arr.sort()
        minimum_diff = arr[1] - arr[0]
        pairs = [arr[0], arr[1]]
        for index in range(2, len(arr)):
            if (arr[index] - arr[index - 1]) == minimum_diff:
                pairs.append(arr[index - 1])
                pairs.append(arr[index])
            if (arr[index] - arr[index - 1]) < minimum_diff:
                minimum_diff = arr[index] - arr[index - 1]
                pairs = [arr[index - 1], arr[index]]
    
        return pairs
    
  • + 0 comments
    #python 3 solution
    from itertools import pairwise
    
    def closestNumbers(arr):
        arr.sort()
        minDiff = max(arr)-min(arr)
        pairs = []
        #finds minimum difference
        for i,j in pairwise(arr):
            minDiff = min(minDiff,j-i)
        #adds pairs with minimum difference to output
        for i,j in pairwise(arr):
            if j-i == minDiff:
                pairs.extend([i,j])
        return pairs
    
  • + 0 comments

    Python 3 solution:

    from itertools import pairwise
    
    
    def closestNumbers(arr: list[int]) -> list[int]:
        pairs = []
        min_diff = float("inf")
        arr.sort()
        for i, j in pairwise(arr):
            if (diff := abs(i - j)) == min_diff:
                pairs += [i, j]
                continue
            if diff < min_diff:
                min_diff = diff
                pairs = [i, j]
        return pairs