Skip to content

Instantly share code, notes, and snippets.

@almaax33
Created April 26, 2020 16:33
Show Gist options
  • Save almaax33/3cdf8157cd73b99df8669c6113d2aaf4 to your computer and use it in GitHub Desktop.
Save almaax33/3cdf8157cd73b99df8669c6113d2aaf4 to your computer and use it in GitHub Desktop.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
return recursiveFunction(l1, l2, new ListNode(0), 0);
}
public ListNode recursiveFunction(ListNode l1, ListNode l2, ListNode result, int valorEx){
if(l1 == null && l2 == null){
if(valorEx != 0){
result.val = valorEx;
}
return result;
}else{
getNext(l1, l2, result, valorEx);
}
return result;
}
private void getNext(ListNode ln1, ListNode ln2, ListNode result, int valorEx) {
int valor = ln1 == null ? ln2.val :
ln2 == null ? ln1.val :
ln1.val+ln2.val;
if(valor + valorEx >= 10){
result.val = (valor + valorEx) % 10;
valorEx = (valor + valorEx - result.val) / 10;
}else{
result.val = valor + valorEx;
valorEx = 0;
}
if(ln1 == null && ln2 == null && valorEx!= 0)
result.next = new ListNode(valorEx);
if(ln1 != null && ln2 != null) {
if (ln1.next == null && ln2.next == null && valorEx == 0) return;
result.next = recursiveFunction(ln1.next, ln2.next, new ListNode(0), valorEx);
}else if(ln1 != null && ln2 == null){
if(ln1.next == null && valorEx== 0) return;
result.next = recursiveFunction(ln1.next, null, new ListNode(0), valorEx);
}else if(ln1 == null && ln2 != null){
if(ln2.next == null && valorEx== 0) return;
result.next = recursiveFunction(ln2.next, null, new ListNode(0), valorEx);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment