Our Idea is to sum up each elements in the given two nodes and create a new node.
/**
* Sum up two Node to one in java
*/
package com.leetcode.algorithms;
/**
* @author Cfed kozhikode
*
*/
public class MainClass {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution s = new Solution();
System.out.println(989+989);
ListNode l1 = new ListNode(9);
l1.next = new ListNode(9);
l1.next.next = new ListNode(9);
ListNode l2 = new ListNode(1);
/* l2.next = new ListNode(8);
l2.next.next = new ListNode(9);*/
ListNode a = s.addTwoNumbers(l1, l2);
// System.out.println(a);
while(a!=null) {
System.out.print(a.val+" ");
a=a.next;
}
}
}
package com.leetcode.algorithms;
/**
 * 
 * @author Bithesh
 *
 */
class Solution {
 private ListNode parentNode = null;
 private int carryforward = 0;
 public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
  int val1 = (null != l1) ? l1.val : 0;
  int val2 = (null != l2) ? l2.val : 0;
  int sum = val1 + val2 + carryforward;
  carryforward = sum / 10;
  int value = sum % 10;
  parentNode = insertValue(parentNode, value);
  ListNode n1 = (l1 == null || l1.next == null) ? null : l1.next;
  ListNode n2 = (l2 == null || l2.next == null) ? null : l2.next;
  if (n1 != null || n2 != null) {
   addTwoNumbers(n1, n2);
  }else if (carryforward > 0) {
   parentNode = insertValue(parentNode, carryforward);
   carryforward = 0;
  }
  return parentNode;
 }
 private ListNode insertValue(ListNode node, int data) {
  if (node == null) {
   return new ListNode(data);
  } else {
   node.next = insertValue(node.next, data);
  }
  return node;
 }
}
/**
 * 
 */
package com.leetcode.algorithms;
/**
 * @author Bithesh
 *
 */
public class ListNode {
 int val;
 ListNode next;
 ListNode(int x) {
  val = x;
 }
}
No comments:
Post a Comment
Your feedback may help others !!!