Что общего
Ограничение времени 60 секунд
Ограничение памяти 1.5 Гб
Ввод стандартный ввод или main.go
Вывод стандартный вывод
Гоша и его друг Роб поспорили, что общего у них больше, чем отличий. Чтобы проверить, они вывалили содержимое рюкзаков на пол и стали считать предметы, которые есть в обоих рюкзаках. Вам вываливать ничего не нужно, нужно только написать функцию, которая находит пересечение двух слайсов.
Напишите функцию IntersectionOfSlices(slice1, slice2 []int) []int, которая получает два слайса из целочисленных элементов и возвращает слайс с элементами, которые встречаются в обоих.
(Не забудьте про пакет main).
Примечания
Например, если передать функции IntersectionOfSlices(slice1, slice2 []int) []int слайсы [1 2 3 4] и [1 2], то она должна вернуть слайс [1 2], а если передать слайсы [1 2 3 4] и [0], то слайс [].
Другие языки программирования и технологии
Решите срочно не с инета на Go
Что поделать, если решение из интернета вполне разумно. Но если хочешь другой способ решения задачи, то для Go 1.21:
Если у тебя Go 1.20 или более древний, то поменяется сортировка:
package main
import "slices"
func IntersectionOfSlices(s1, s2 []int) (result []int) {
slices.Sort(s1)
slices.Sort(s2)
for i1, i2 := 0, 0; i1 < len(s1) && i2 < len(s2); {
if s1[i1] == s2[i2] {
result = append(result, s1[i1])
i1++
i2++
} else if s1[i1] < s2[i2] {
i1++
} else {
i2++
}
}
return
}
Сортируем срезы, а потом производим слияние (похожее на MergeSort), но не с объединением двух срезов, а с добавлением в результат только совпадающих значений.Если у тебя Go 1.20 или более древний, то поменяется сортировка:
package main
import "sort"
func IntersectionOfSlices(s1, s2 []int) (result []int) {
sort.Ints(s1)
sort.Ints(s2)
for i1, i2 := 0, 0; i1 < len(s1) && i2 < len(s2); {
if s1[i1] == s2[i2] {
result = append(result, s1[i1])
i1++
i2++
} else if s1[i1] < s2[i2] {
i1++
} else {
i2++
}
}
return
}
package main
import (
"fmt"
)
func IntersectionOfSlices(slice1, slice2 []int) []int {
// Создаем мапу для хранения элементов из slice1
elementMap := make(map[int]bool)
// Создаем слайс для результата
result := []int{}
// Заполняем мапу элементами из slice1
for _, elem := range slice1 {
elementMap[elem] = true
}
// Проверяем элементы из slice2 на наличие в мапе
for _, elem := range slice2 {
if elementMap[elem] {
result = append(result, elem)
}
}
return result
}
func main() {
slice1 := []int{1, 2, 3, 4}
slice2 := []int{1, 2}
result := IntersectionOfSlices(slice1, slice2)
fmt.Println(result) // Выводит [1 2]
}
import (
"fmt"
)
func IntersectionOfSlices(slice1, slice2 []int) []int {
// Создаем мапу для хранения элементов из slice1
elementMap := make(map[int]bool)
// Создаем слайс для результата
result := []int{}
// Заполняем мапу элементами из slice1
for _, elem := range slice1 {
elementMap[elem] = true
}
// Проверяем элементы из slice2 на наличие в мапе
for _, elem := range slice2 {
if elementMap[elem] {
result = append(result, elem)
}
}
return result
}
func main() {
slice1 := []int{1, 2, 3, 4}
slice2 := []int{1, 2}
result := IntersectionOfSlices(slice1, slice2)
fmt.Println(result) // Выводит [1 2]
}
Сергей Фролов
Чел это с инета
Похожие вопросы
- Помогите решить, срочно ??????
- ПОЖ ПОМОГИТЕ РЕШИТЬ СРОЧНО НАДО как умножают и делят смешанные дроби? вычислите произведения 5 КЛАСС
- помогите решить срочно решить задачу в абс не получаеться а надо
- кто нибудь знает турбо паскаль?помогите решить!выручайте,срочно надо!
- У Go и Rust много общего у них?
- Можно ли использовать GO для программирования серверной части веб-приложений взамен PHP?
- как jpg файл переделать в BMP очень срочно а паинт с инета качать
- Какое у вас мнение по поводу языка Go?
- Про работу в инете. Где большая вероятность лохотрона в том, что тебе не заплатят за работу? (см. вн.)
- помогите решить задачи на делфи!!!!ОЧЕНЬ СРОЧНО И ОЧЕНЬ НАДО!!!!