Какой-то специальной теории тут нет.
Главная идея в том, что нужно получить ответ за линейное время, за $O(N)$.
Иначе говоря, за несколько (чаще всего один) проходов по массиву. То есть каждый элемент рассматривается константное число раз.
Отметим, что $O(с \cdot N) = O(N)$, где $c$ - константа.