Closest Numbers

Sort by

recency

|

631 Discussions

|

  • + 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 comments

    My Java solution:

    public static List<Integer> closestNumbers(List<Integer> arr) {
            if(arr.size() == 2) return Arrays.asList(arr.get(0), arr.get(1));
            //goal: find pair with smallest abs diff
            //sort arr
            Collections.sort(arr);
            //init new min
            int min = arr.get(1) - arr.get(0);
            List<Integer> minIdices = new ArrayList<>();
            minIdices.add(arr.get(0));
            minIdices.add(arr.get(1));
            //compare adj elements
            for(int i = 2; i < arr.size(); i++){
                int diff = arr.get(i) - arr.get(i - 1);
                //if new min is found clear ans list
                if(diff < min){
                    min = diff;
                    minIdices.clear();
                    minIdices.add(arr.get(i - 1));
                    minIdices.add(arr.get(i));
                }
                else if(diff == min){
                    minIdices.add(arr.get(i - 1));
                    minIdices.add(arr.get(i));
                }
            }
            return minIdices;
        }
    
  • + 0 comments

    This information is really helpfull for thoese who are interested in custom ecommerce development

  • + 0 comments

    public static List closestNumbers(List arr) { // Write your code here

        // 5,4,3,2
        List<List<Integer>> list = new ArrayList<>(arr.size() - 1);
        for (int i = 0; i < arr.size() - 1; i++) {
            list.add(new ArrayList<>());
        }
        arr = arr.stream().sorted().collect(Collectors.toList());
    
        for (int i = 0; i < arr.size() - 1; i++) {
            list.get(i).add(arr.get(i));
            list.get(i).add(arr.get(i + 1));
        }
    
        List<Integer> ind = new ArrayList<>();
    
        for (int i = 0; i < list.size(); i++) {
            ind.add(list.get(i).get(1) - list.get(i).get(0));
        }
    
        int smaller = ind.stream().min(Comparator.naturalOrder()).orElse(0);
    
        List<Integer> res = new ArrayList<>();
        for (int i = 0; i < ind.size(); i++) {
            if (ind.get(i) == smaller) {
                list.get(i).forEach(f -> res.add(f));
            }
        }
        // System.out.println(res);
        return res;
    }
    
  • + 0 comments

    Here is my Python solution!

    def closestNumbers(arr):
        arr = sorted(arr)
        lowest = float("inf")
        minimum = []
        for i in range(len(arr) - 1):
            if arr[i + 1] - arr[i] < lowest:
                lowest = arr[i + 1] - arr[i]
                minimum = [arr[i], arr[i + 1]]
            elif arr[i + 1] - arr[i] == lowest:
                minimum.append(arr[i])
                minimum.append(arr[i + 1])
        return minimum