isIncluded - функция поиска вхождения упорядоченного массива в упорядоченному массиве
Сложность поиска по времени составляет O(log(N)+M)
Для исключительных ситуаций, не более O(N)
В ТЗ не было указало что элементы уникальные, поэтому проверил кейс с повторяющимеся элементами
Дан упорядоченный массив чисел размером N
Нужно реализовать алгоритм поиска вхождения упорядоченного подмассива размера M
, где M << N
func isInclude(array int[], subarray []int) bool
assert(isInclude([1, 2, 3, 5, 7, 9, 11], []) == true)
assert(isInclude([1, 2, 3, 5, 7, 9, 11], [3, 5, 7]) == true)
assert(isInclude([1, 2, 3, 5, 7, 9, 11], [4, 5, 7]) == false)
Что хочется увидеть:
- Алгоритм со сложность быстрее чем
O(N)
по времени
go build include.go
go test
go test --race
golangci-lint run -v --enable-all