Одиннадцать задач на поиск за один проход. Каждая — цикл из урока с другой проверкой или с другим запоминаемым значением. Решите заранее, до того как писать код: первое совпадение или последнее? остановиться на совпадении или идти дальше? что, если совпадения нет?
- «Последняя запись в журнале»: последнее вхождение — без
break. - «Точка разрушения» и «First Above Threshold»: первый элемент строго больше k.
- «Парные сигналы»: первое
i, для которогоa[i] == a[i + 1]; цикл останавливается на один элемент раньше конца. - «Первый локальный пик»: проверка смотрит на обоих соседей, поэтому
iидёт от 1 до n − 2. - «Ближайшее совпадение» и «Closest Value»: храните лучшее на данный момент и
его индекс; строгое
<оставляет первое из равных. «Closest Value» при ничьей предпочитает меньшее значение — сравнивайте пару{расстояние, значение}, — а числа там достигают 10¹⁸. - «First Occurrence» и «Last Occurrence»: 5·10⁶ чисел; не убирайте строки
быстрого ввода-вывода и читайте в
vector<int>. - «In Subarray»: поиск идёт от
lдоr(в условии индексы с 1). - «Matrix Position»: поиск по таблице, строка за строкой, с остановкой на первом
совпадении —
breakиз обоих циклов илиreturnиз функции.