Сравнение методов обновления переменной в C++
В C++ существует несколько способов обновления значения переменной. В этой статье мы рассмотрим два из них: использование условного оператора if
и функции max
. В качестве примера мы будем использовать задачу 1732. Find the Highest Altitude
из LeetCode
.
Задача
Велосипедист начинает свое путешествие с высоты 0 и проходит через n + 1 точек на разной высоте. Нам дан целочисленный массив gain
длины n
, где gain[i]
— это прирост высоты между точками i
и i + 1
для всех (0 <= i < n)
. Наша задача - найти наибольшую высоту, которую достигает велосипедист.
Использование if
Первый подход к решению задачи - использование условного оператора if
. Вот пример кода:
1
2
3
4
5
6
7
8
9
int largestAltitude(vector<int>& gain) {
int h{};
int sum{};
for(auto i = 0; i < gain.size() ; ++i) {
sum += gain[i];
if(sum > h) h = sum;
}
return h;
}
В этом коде мы проверяем, если сумма sum
больше текущего максимума h
, то обновляем h
значением sum
.
Использование max
Второй подход к решению задачи - использование функции max
. Вот пример кода:
1
2
3
4
5
6
7
8
9
int largestAltitude(vector<int>& gain) {
int h{};
int sum{};
for(auto i = 0; i < gain.size() ; ++i) {
sum += gain[i];
h = max(h, sum);
}
return h;
}
В этом коде мы просто устанавливаем h
равным максимальному значению между текущим h
и sum
.
Сравнение
С точки зрения производительности, оба подхода эквивалентны, так как оба выполняются за константное время O(1). Выбор между ними обычно зависит от стиля программирования и предпочтений разработчика. Вариант с max
может быть более читабельным, так как он явно показывает, что h
устанавливается равным максимальному значению.
В заключение, стоит отметить, что использование большого количества условных операторов if
в одном цикле может усложнить чтение и понимание кода.