From 09e012ffff27c345f28d518bd0b679cc5b64179a Mon Sep 17 00:00:00 2001 From: Gonzalo Diaz Date: Fri, 9 May 2025 01:09:24 -0400 Subject: [PATCH] [REFACTOR] [Hacker Rank] Interview Preparation Kit: Greedy Algorithms: Minimum Absolute Difference in an Array. Test Case 2 fixed. --- ...minimum_absolute_difference_in_an_array.go | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/exercises/hackerrank/interview_preparation_kit/greedy_algorithms/minimum_absolute_difference_in_an_array.go b/exercises/hackerrank/interview_preparation_kit/greedy_algorithms/minimum_absolute_difference_in_an_array.go index a6cd910..39c91fe 100644 --- a/exercises/hackerrank/interview_preparation_kit/greedy_algorithms/minimum_absolute_difference_in_an_array.go +++ b/exercises/hackerrank/interview_preparation_kit/greedy_algorithms/minimum_absolute_difference_in_an_array.go @@ -5,23 +5,38 @@ package hackerrank -import "slices" +import ( + "slices" +) func minimumAbsoluteDifference(arr []int32) int32 { // Sort the array - arrCopy := make([]int32, len(arr)) + sortedNums := make([]int32, len(arr)) - copy(arrCopy, arr) - slices.Sort(arrCopy) + copy(sortedNums, arr) + slices.Sort(sortedNums) // Find the minimum absolute difference result := int32(0) - for i := range len(arrCopy) - 1 { - diff := arrCopy[i+1] - arrCopy[i] - if diff < result || result == 0 { + var resultEmpty = true + + for i := range len(sortedNums) - 1 { + var aValue = sortedNums[i] + var bValue = sortedNums[i+1] + + diff := aValue - bValue + if diff < 0 { + diff = -1 * diff + } + + if resultEmpty { result = diff + resultEmpty = false + } else { + result = min(result, diff) } } + return result }