From 1259272f3f66c523daf15742da075855b2878ad1 Mon Sep 17 00:00:00 2001 From: "go-interview-practice-bot[bot]" <230190823+go-interview-practice-bot[bot]@users.noreply.github.com> Date: Sat, 8 Nov 2025 01:04:41 +0000 Subject: [PATCH 1/2] Add solution for Challenge 19 --- .../submissions/kiramux/solution-template.go | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 challenge-19/submissions/kiramux/solution-template.go diff --git a/challenge-19/submissions/kiramux/solution-template.go b/challenge-19/submissions/kiramux/solution-template.go new file mode 100644 index 00000000..284e0619 --- /dev/null +++ b/challenge-19/submissions/kiramux/solution-template.go @@ -0,0 +1,85 @@ +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) == 0 { + return 0 + } + max := math.MinInt + for _, v := range numbers { + if v > max { + max = v + } + } + return max +} + +// RemoveDuplicates returns a new slice with duplicate values removed, +// preserving the original order of elements. +func RemoveDuplicates(numbers []int) []int { + seen := make(map[int]struct{}, len(numbers)) + res := []int{} + for _, v := range numbers { + if _, ok := seen[v]; !ok { + seen[v] = struct{}{} + res = append(res, v) + } + } + return res +} + +// ReverseSlice returns a new slice with elements in reverse order. +func ReverseSlice(slice []int) []int { + if len(slice) == 0 { + return []int{} + } + result := make([]int, len(slice)) + copy(result, slice) + left := 0 + right := len(result) - 1 + for left < right { + result[left], result[right] = result[right], result[left] + left++ + right-- + } + return result +} + +// FilterEven returns a new slice containing only the even numbers +// from the original slice. +func FilterEven(numbers []int) []int { + result := []int{} + for _, v := range numbers { + if v%2 == 0 { + result = append(result, v) + } + } + return result +} From 58b13e63437c6f62ac0c9b03dccdc8e3237a1c18 Mon Sep 17 00:00:00 2001 From: kiramux <160688228+kiramux@users.noreply.github.com> Date: Sat, 8 Nov 2025 09:20:42 +0800 Subject: [PATCH 2/2] update ReverseSlice() --- challenge-19/submissions/kiramux/solution-template.go | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/challenge-19/submissions/kiramux/solution-template.go b/challenge-19/submissions/kiramux/solution-template.go index 284e0619..47543c48 100644 --- a/challenge-19/submissions/kiramux/solution-template.go +++ b/challenge-19/submissions/kiramux/solution-template.go @@ -61,13 +61,8 @@ func ReverseSlice(slice []int) []int { return []int{} } result := make([]int, len(slice)) - copy(result, slice) - left := 0 - right := len(result) - 1 - for left < right { - result[left], result[right] = result[right], result[left] - left++ - right-- + for i, v := range slice { + result[len(slice)-1-i] = v } return result }