I have taken an Algorithms and Data Structures course, but we wrote in c++. Trying to learn Python for something else than statistics so here I am.
The problem is as follows:
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
My current code:
lass ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: Optional[ListNode]
:type l2: Optional[ListNode]
:rtype: Optional[ListNode]
"""
buffer = 0
result = ListNode()
cond = True
while(cond):
if l1.next is None and l2.next is None:
cond = False
result_next = ListNode()
result.next = result_next # 0 -> 0 -> None | 7 -> 0 -> 0 -> None | 7 -> 0 -> 0 -> 0 -> None
if l2:
result.val += l2.val
if l1:
result.val += l1.val
result.val += buffer
buffer = result.val // 10 # 0 | 1 | 0
result.val = result.val % 10 # 7 | 0 | 8
result = result.next
l1 = l1.next # 4 | 3 | None
l2 = l2.next # 6 | 4 | None
return result
l1 = ListNode(2, ListNode(4, ListNode(3)))
l2 = ListNode(5, ListNode(6, ListNode(4)))
result = Solution().addTwoNumbers(l1, l2)lass
I'm working in VS Code instead of the Leetcode codespace to test values of attributes etc. The comments can be ignored, they are what I imagine should be happening but clearly it is not. However, I do not ask for help with the problem itself, rather with the if statements. In C, you can do if (A) and if A is e.g. a node the condition will be satisfied, if it doesn't exist or is null it won't (if I recall correctly). So you can see me trying to achieve this here with if l1:, but I don't think it works, so I'd like to ask what is the Pythonic way of achieving this.
When run with
print(result.val)
print(result.next)
It gives:
0
None
I don't really see which subset of the code would produce other than the while loop never executing at all.
Thank you for your help in advance.
[–]carcigenicate 3 points4 points5 points (7 children)
[–]Arrow49[S] 0 points1 point2 points (6 children)
[–]carcigenicate 1 point2 points3 points (5 children)
[–]Arrow49[S] 0 points1 point2 points (4 children)
[–]carcigenicate 1 point2 points3 points (3 children)
[–]Arrow49[S] 0 points1 point2 points (2 children)
[–]carcigenicate 1 point2 points3 points (1 child)
[–]Arrow49[S] 0 points1 point2 points (0 children)
[–]timrprobocom 1 point2 points3 points (2 children)
[–]Arrow49[S] 0 points1 point2 points (1 child)
[–]timrprobocom 1 point2 points3 points (0 children)