package main
import (
"errors"
"fmt"
"math"
)
// findTwoLargest finds the largest and second-largest
// elements in a slice.
//
// Returns:
// - largest element
// - second-largest element
// - error if the slice contains fewer than two elements
func findTwoLargest(numbers []int) (int, int, error) {
if len(numbers) < 2 {
return 0, 0, errors.New("slice must contain at least two elements")
}
largest := math.MinInt
secondLargest := math.MinInt
for _, value := range numbers {
// Found a new largest value
if value > largest {
secondLargest = largest
largest = value
} else if value > secondLargest {
// Update second largest if needed
secondLargest = value
}
}
return largest, secondLargest, nil
}
func main() {
// Input data
numbers := []int{3, 4, 9, 6, 7, 1, 2, 5}
// Find the two largest elements
largest, secondLargest, err := findTwoLargest(numbers)
if err != nil {
fmt.Println("Error:", err)
return
}
// Display results
fmt.Println("Slice:", numbers)
fmt.Println("Largest element:", largest)
fmt.Println("Second largest element:", secondLargest)
}
/*
run:
Slice: [3 4 9 6 7 1 2 5]
Largest element: 9
Second largest element: 7
*/