Я не знаю, какую реализацию Arduino HashMap вы используете, но если это эта , это лучшее, что я могу придумать, учитывая API. Это, конечно, не оптимально, и лучшая структура данных будет быстрее.
Если я правильно понял проблему, я бы просто выполнил линейный поиск. Вы знаете, как получить высшую точку. Вы знаете, что местоположение второй наивысшей точки должно быть ниже самой высокой. (Я добавляю здесь, вам может понадобиться вычесть, если ваша система координат отличается). Предположим, что минимальная разница в позициях должна быть min_dist
(некоторое значение 2-10).
HashMap<int, int, N> points = ...;
int key_low = upper_position + min_dist;
int peak_location = -1;
for(int i=0; i < points.size(); ++i)
{
int location = points.keyAt(i);
if (location < key_low) continue;
int resistance = points[location];
if (peak_location < 0 || resistance > points[peak_location])
{
peak_location = location;
}
}