Временная сложность вашей операции может быть описана как O (n), где n - количество точек в вашем массиве. Ваша операция эквивалентна поиску чего-либо в несортированном массиве. Есть способы, которыми вы можете сделать свой алгоритм более эффективным, но вы не можете выполнить этот тип поиска менее чем за линейное время, O (n).
Для некоторых проблем вы можете улучшить временную сложность, сначала отсортировав или собрав дополнительную информацию о проблеме. В случае этой проблемы вы можете доказать, что ваше решение линейно связано с размером массива. При случайном массиве каждый из 3 элементов имеет 50% -ную вероятность возникновения. Для каждого n шансы происходящего паттерна составляют 0,5 ^ 3 = 1/8. Это означает, что вы будете считать около 1/8 * n вхождений шаблона. Подсчет только одного шаблона занимает O (n) времени.
Если ваша цель была Оценить количество вхождений в случайном массиве, вы можете дать оценку за O (1) время. Этот шаблон должен встречаться примерно 1/8 * (j-1) * (i-1) раз в случайном массиве.