leetcode

Leetcode Solutions (0x6A73)
git clone https://git.pngu.org/leetcode
Log | Files | Refs | Submodules | README

commit 7cb9043ca3ec67591aa4ee1d904fe2b4d31cf79b
parent ad755a99815ed18ccabb30ab2bbbfa32cb2487a2
Author: Jack Sangdahl <jack@pngu.org>
Date:   Sun, 25 Jan 2026 22:03:24 -0700

1200. minimum absolute difference

Diffstat:
Amin_abs_diff.c | 70++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Amin_abs_diff.py | 27+++++++++++++++++++++++++++
2 files changed, 97 insertions(+), 0 deletions(-)

diff --git a/min_abs_diff.c b/min_abs_diff.c @@ -0,0 +1,70 @@ +// 1200. Minimum Absolute Difference +#include "leetcode.h" + +/* + * given an array of distinct integers 'arr', find all pairs of elements with + * the minimum absolute difference of any two elements. return a list of pairs + * in ascending order (with respect to pairs), each pair '[a, b]' follows: 'a, + * b' are from 'arr', 'a < b', and 'b - a' equals to the minimum absolute + * difference of any two elements in 'arr'. + */ + +int cmp(const void *a, const void *b) { return *(int *)a - *(int *)b; } + +int **minimumAbsDifference(int *arr, int arrSize, int *returnSize, + int **returnColumnSizes) { + qsort(arr, arrSize, sizeof(int), cmp); + int **ans = (int **)malloc(arrSize * sizeof(int *)); + (*returnColumnSizes) = (int *)malloc(arrSize * sizeof(int)); + *returnSize = 0; + int min = INT_MAX; + for (int i = 1; i < arrSize; i++) + min = fmin(min, arr[i] - arr[i - 1]); + for (int i = 1; i < arrSize; i++) + if (arr[i] - arr[i - 1] == min) { + (*returnColumnSizes)[*returnSize] = 2; + ans[*returnSize] = (int *)malloc(2 * sizeof(int)); + ans[*returnSize][0] = arr[i - 1]; + ans[(*returnSize)++][1] = arr[i]; + } + return ans; +} + +int main() { + int a1[] = {4, 2, 1, 3}, rs1, *rcs1; + int a2[] = {1, 3, 6, 10, 15}, rs2, *rcs2; + int a3[] = {3, 8, -10, 23, 19, -4, -14, 27}, rs3, *rcs3; + int **mad1 = minimumAbsDifference(a1, ARRAY_SIZE(a1), &rs1, &rcs1); + int **mad2 = minimumAbsDifference(a2, ARRAY_SIZE(a2), &rs2, &rcs2); + int **mad3 = minimumAbsDifference(a3, ARRAY_SIZE(a3), &rs3, &rcs3); + for (int i = 0; i < rs1; i++) { + for (int j = 0; j < rcs1[i]; j++) + printf("%d ", mad1[i][j]); + printf("\n"); + } + printf("\n"); + for (int i = 0; i < rs2; i++) { + for (int j = 0; j < rcs2[i]; j++) + printf("%d ", mad2[i][j]); + printf("\n"); + } + printf("\n"); + for (int i = 0; i < rs3; i++) { + for (int j = 0; j < rcs3[i]; j++) + printf("%d ", mad3[i][j]); + printf("\n"); + } + printf("\n"); + for (int i = 0; i < rs1; i++) + free(mad1[i]); + free(mad1); + free(rcs1); + for (int i = 0; i < rs2; i++) + free(mad2[i]); + free(mad2); + free(rcs2); + for (int i = 0; i < rs3; i++) + free(mad3[i]); + free(mad3); + free(rcs3); +} diff --git a/min_abs_diff.py b/min_abs_diff.py @@ -0,0 +1,27 @@ +# 1200. Minimum Absolute Difference + +""" +given an array of distinct integers 'arr', find all pairs of elements with +the minimum absolute difference of any two elements. return a list of pairs +in ascending order (with respect to pairs), each pair '[a, b]' follows: 'a, +b' are from 'arr', 'a < b', and 'b - a' equals to the minimum absolute +difference of any two elements in 'arr'. +""" + + +class Solution(object): + def minimumAbsDifference(self, arr): + """ + :type arr: List[int] + :rtype: List[List[int]] + """ + arr.sort() + m = min(b - a for a, b in zip(arr, arr[1:])) + return [[a, b] for a, b in zip(arr, arr[1:]) if b - a == m] + + +if __name__ == "__main__": + obj = Solution() + print(obj.minimumAbsDifference(arr=[4, 2, 1, 3])) + print(obj.minimumAbsDifference(arr=[1, 3, 6, 10, 15])) + print(obj.minimumAbsDifference(arr=[3, 8, -10, 23, 19, -4, -14, 27]))