LeetCode #2 - Add Two Numbers

preview_player
Показать описание
Рекомендации по теме
Комментарии
Автор

Евгений, спасибо за обзоры решений задач LeetCode, в русскоязычном сегменте полезный контент.

antonioshizko
Автор

dozen - это дюжина:) т.е. 12:)
tensHolder/tensKeeper прям напрашивается:)

Спасибо за разбор задачи!!) Пересматриваю плейлист.

manOfPlanetEarth
Автор

Жесть, что такое ListNode? Это кастомный класс какой-то или что?

antonkabernik
Автор

очень сильно шипит фон:( Надо поколдовать с микрофоном. В новых выпусках не проверял - возможно, проблема решена.

manOfPlanetEarth
Автор

Здравствуйте, Евгений. Если не сложно, помогите разобраться пожалуйста. В этой задаче я решил пойти немного другим путем:
1. Превращать ноды в числа;
2. Получить сумму чисел;
3. Откусывать последнюю цифру от суммы чисел и вкладывать в нод по очереди. (получается реверс, как и требуется по условию задачи)

В последнем пункте (метод getList(int num)) столкнулся с проблемой: следующее за первым вложением (вторая цифра) проглатывается/не вносится в нод, при это через принт программа выводит все цифры числа, которые по идее должны вноситься в нод. Есть подозрение, что такая проблема именно с нулем.

Заранее спасибо.

class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode p = l1, q = l2;
int num1 = getNum(p);
int num2 = getNum(q);
int sum = num1 + num2;
return getList(sum);
}

public int getNum(ListNode list) {
int result = 0;
int mult = 1;
while(list != null) {
int x = (list != null) ? list.val : 0;
result += x * mult;
mult *= 10;
if(list != null) list = list.next;
}
return result;
}

public ListNode getList(int num) {
ListNode result = new ListNode(num%10); //создаем нод, кладем туда 1ю цифру (последняя в числе)
num = num / 10; //обрезаем последнюю цифру
while(num > 0) { //пока число не кончилось кладем по одной цифре в нод
int put = num % 10; //получаем число, которое положим в нод
result.next = new ListNode(put); //кладем цифру в следующую ячейку нода
num = num / 10; //обрезаем цифру, пофторяем цикл
}
return result;
}
}

alexandrsavelyev
Автор

Но ведь этот код неверен. currentNode.next = new ListNode(sum % 10); Мы положили значение в следующий нод, а в этом так и остался ноль. Т.е. ответ будет 0708, а нужно 708. Поправьте плз если я не прав.

АлександрТ-бб
Автор

Здравствуйте, Евгений. Спасибо за Ваш труд. Подскажите, пожалуйста, будут ли появляться дальше видеоуроки на разные темы? Ведь нас уже 24 тысячи) Ждем новые видео, если позволяет ситуация в связи с войной...

voker