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.
- Prepare
- Algorithms
- Sorting
- Closest Numbers
- Discussions
Closest Numbers
Closest Numbers
+ 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 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 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 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 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; }
Load more conversations
Sort 576 Discussions, By:
Please Login in order to post a comment