We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
  • HackerRank Home

    HackerRank

  • |
  • Prepare
  • Certify
  • Compete
  • Hiring developers?
  1. Prepare
  2. Algorithms
  3. Sorting
  4. Closest Numbers
  5. Discussions

Closest Numbers

Problem
Submissions
Leaderboard
Discussions
Editorial
Topics

Sort 576 Discussions, By:

recency

Please Login in order to post a comment

  • lopez_luisdev
    5 days ago+ 0 comments
    def closestNumbers(arr):
        minimium=0
        arr.sort()
        sorted_list=[]
        for index,element in enumerate(arr[:-1]):
            sorted_list.append([element,arr[index+1]])
            minimium = arr[index+1] - element if (minimium > arr[index+1] - element or index==0) else minimium
        return [i for ans in sorted_list if ans[1]- ans[0] == minimium for i in ans]
    
    0|
    Permalink
  • nazalint
    1 week ago+ 0 comments
    def closestNumbers(arr):
        dif = []
        arr.sort()
        for i in range(len(arr) - 1):
            dif.append(arr[i+1] - arr[i])
        min_dif = min(dif)
        res = []
        for i in range(len(dif)):
            if dif[i] == min_dif:
                res.append(arr[i])
                res.append(arr[i+1])
        return res
    
    0|
    Permalink
  • birdmachine007
    1 week ago+ 0 comments

    Python 3: O(n*logn)

    def closestNumbers(arr):
        arr.sort()
        
        result = []
        pre_diff = None
        
        for i in range(len(arr)-1):
            abs_diff = abs((arr[i]) - (arr[i+1]))
            
            if not result  or  abs_diff == pre_diff:
                result.append(arr[i])
                result.append(arr[i+1])
                pre_diff = abs_diff
            elif abs_diff < pre_diff:
                result.clear()
    
                result.append(arr[i])
                result.append(arr[i+1])
                pre_diff = abs_diff
    
        return result
    
    0|
    Permalink
  • TuanBao
    2 weeks ago+ 0 comments

    This is my Java solution, feel free to ask me any questions.

    public static List<Integer> closestNumbers(List<Integer> arr) {
        if (arr == null || arr.size() < 2) {
            return new ArrayList<>();
        }
    
        arr.sort(null);
        int smallestDiff = Integer.MAX_VALUE;
        List<Integer> results = new ArrayList<>();
    
        for (int i = 0; i < arr.size() - 1; i++) {
            int diff = arr.get(i + 1) - arr.get(i);
    
            if (diff < smallestDiff) {
                results.clear();
                results.add(arr.get(i));
                results.add(arr.get(i + 1));
                smallestDiff = diff;
            } else if (diff == smallestDiff) {
                results.add(arr.get(i));
                results.add(arr.get(i + 1));
            }
        }
    
        return results;
    }
    
    0|
    Permalink
  • alban_tyrex
    3 weeks ago+ 0 comments

    Here is my c++ solution, you can watch the explanation here: https://youtu.be/-sX3IgdQ6Wg

    vector<int> closestNumbers(vector<int> arr) {
        sort(arr.begin(), arr.end());
        int diff = INT_MAX;
        vector<int> result;
        for(int i = 1; i < arr.size(); i++){
            if(arr[i] - arr[i-1] < diff){
                diff = arr[i] - arr[i-1];
                result = {arr[i-1], arr[i]};
            }
            else if(arr[i] - arr[i-1] == diff){
                result.insert(result.end(), {arr[i-1], arr[i]});
            }
        }
        return result;
    }
    
    0|
    Permalink
Load more conversations

Need Help?


View editorial
View top submissions
  • Blog
  • Scoring
  • Environment
  • FAQ
  • About Us
  • Support
  • Careers
  • Terms Of Service
  • Privacy Policy