Это простая проблема. Прежде чем перейти к коду, вы должны знать, что такое двоичное число и как мы преобразуем двоичное число в десятичное.

Короче говоря, мы записываем любое двоичное число, используя две цифры, 0 и 1.
Пример: 101101. Чтобы узнать больше об этом, проверьте здесь.

Математическая формула для преобразования любого двоичного числа в десятичное показана на изображении ниже:

Поскольку двоичные числа выражаются в системе счисления с основанием 2. Таким образом, мы получим десятичную дробь, умножая каждую двоичную цифру на 2, возведенную в степень позиции цифры. Сумма всех этих значений даст нам десятичное число.

Это двоичное число хранится в отдельном связанном списке с head в качестве начального эталонного узла. Для каждого узла значение будет либо 0, либо 1 (т. е. связанный список хранит представление двоичного числа).

Каждый экземпляр узла будет иметь value и указатель next, которые будут указывать на следующий узел.

Пример:

Реализация с использованием JavaScript:

Мы реализуем функцию getNumber, которая будет иметь параметр импорта binary, который по сути является ссылкой на заголовок связанного списка. Функция вернет десятичное число, то есть наше решение.

Поскольку сначала нам нужно знать положение цифры в данном связанном списке (согласно приведенной выше математической формуле). Таким образом, чтобы получить позиции, нам нужно найти длину заданного связанного списка:

const getLengthOfLL = (head) => {
    let result = 0;
    let temp_head = head;
    while(temp_head !== null) {
        result++;
        temp_head = temp_head.next;
    }
    return result;
}

Теперь мы повторим связанный список и начнем добавлять результат для цифр со значением 1 и игнорировать итерации со значением 0.

Мы начинаем с последней позиции и уменьшаем позицию с каждой итерацией, а с помощью Math.pow(2, position) мы будем хранить сумму в переменной result.

var getNumber = function(binary) {
    let listLength = getLengthOfLL(binary) - 1;
    let result = 0;
    while (binary !== null) {
        if (binary.value == 1) {
            result = result + Math.pow(2, listLength);
        }
        listLength--;
        binary = binary.next;
    }
    return result;
};

Вот и все.
Теперь потренируйтесь на платформе leetcode здесь.

Ссылка на другие вопросы по программированию
Поиск максимальной выгоды при планировании работы
Поиск совершенных, недостаточных и избыточных чисел
Найдите, сколько воскресений выпало на первое число месяца в данном году