Сложность: easy
Мы определяем гармоничный массив как массив, в котором разница между его максимальным и минимальным значением составляет ровно 1.
Дан целочисленный массив nums, верните длину его самой длинной гармоничной подпоследовательности среди всех возможных подпоследовательностей.
Подпоследовательность массива - это последовательность, которую можно получить из массива, удалив некоторые или никакие элементы, не изменяя порядок оставшихся элементов.
Пример:
Input: nums = [1,3,2,2,5,2,3,7]
Output: 5
Explanation: The longest harmonious subsequence is [3,2,2,2,3].
👨💻 Алгоритм:
1⃣Пройдитесь по массиву, создавая словарь для подсчета частоты каждого элемента.
2⃣На каждой итерации проверьте, существуют ли в словаре элементы, отличающиеся на 1 от текущего, и обновите максимальную длину гармоничной подпоследовательности.
3⃣Верните максимальную длину гармоничной подпоследовательности.
😎 Решение:
var findLHS = function(nums) {
const count = new Map();
let res = 0;
for (let num of nums) {
count.set(num, (count.get(num) || 0) + 1);
if (count.has(num + 1)) {
res = Math.max(res, count.get(num) + count.get(num + 1));
}
if (count.has(num - 1)) {
res = Math.max(res, count.get(num) + count.get(num - 1));
}
}
return res;
};Ставь 👍 и забирай 📚 Базу знаний