Об этом было задано в интервью Microsoft на сайте.
Подсчитайте количество вхождений заданного ключа в массиве.
Я ответил на линейный поиск, потому что элементы могут быть рассеяны в массив. Скажем, ключ найден в начале и в конце. Итак, мы необходимо сканировать весь массив.
Затем он спросил, что, если массив отсортирован?
Подумал какое-то время и сказал, что снова буду использовать линейный поиск. Поскольку повторения ключа, если они имеются, могут быть в любом месте массива. Как оптимизация Я также сказал, что если первый и последний элементы массива одинаковы, вы может принимать длину массива в качестве ответа.
Является ли мой анализ правильным в обоих случаях?
Пример:
Input = [0 0 1 1 1 2 2 3 3], key = 1, Answer = 3
Input = [0 0 2 2 3 3], key = 1, Answer = 0