From ed1c4832aa13783cfded46fd34c32f0f154515e8 Mon Sep 17 00:00:00 2001 From: "go-interview-practice-bot[bot]" <230190823+go-interview-practice-bot[bot]@users.noreply.github.com> Date: Fri, 7 Nov 2025 15:54:46 +0000 Subject: [PATCH] Add solution for Challenge 19 --- .../iamsurajmandal/solution-template.go | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 challenge-19/submissions/iamsurajmandal/solution-template.go diff --git a/challenge-19/submissions/iamsurajmandal/solution-template.go b/challenge-19/submissions/iamsurajmandal/solution-template.go new file mode 100644 index 00000000..8e262484 --- /dev/null +++ b/challenge-19/submissions/iamsurajmandal/solution-template.go @@ -0,0 +1,80 @@ +package main + +import ( + "fmt" + "math" +) + +func main() { + // Example slice for testing + numbers := []int{3, 1, 4, 1, 5, 9, 2, 6} + + // Test FindMax + max := FindMax(numbers) + fmt.Printf("Maximum value: %d\n", max) + + // Test RemoveDuplicates + unique := RemoveDuplicates(numbers) + fmt.Printf("After removing duplicates: %v\n", unique) + + // Test ReverseSlice + reversed := ReverseSlice(numbers) + fmt.Printf("Reversed: %v\n", reversed) + + // Test FilterEven + evenOnly := FilterEven(numbers) + fmt.Printf("Even numbers only: %v\n", evenOnly) +} + +// FindMax returns the maximum value in a slice of integers. +// If the slice is empty, it returns 0. +func FindMax(numbers []int) int { + if (len(numbers) < 1) { + return 0 + } + max := int(math.Inf(-1)) + for i := 0; i < len(numbers); i++ { + if (numbers[i] > max) { + max = numbers[i] + } + } + return max +} + +// RemoveDuplicates returns a new slice with duplicate values removed, +// preserving the original order of elements. +func RemoveDuplicates(numbers []int) []int { + // TODO: Implement this function + hs := map[int]bool{} + result := []int{} + for _, value := range numbers { + _, exists := hs[value] + if !exists { + hs[value] = true + result = append(result, value) + } + } + return result +} + +// ReverseSlice returns a new slice with elements in reverse order. +func ReverseSlice(slice []int) []int { + result := []int{} + // TODO: Implement this function + for i := len(slice) - 1; i >= 0 ; i-- { + result = append(result, slice[i]) + } + return result +} + +// FilterEven returns a new slice containing only the even numbers +// from the original slice. +func FilterEven(numbers []int) []int { + result := []int{} + for _, value := range numbers{ + if (value % 2 == 0 ) { + result = append(result, value) + } + } + return result +}