Add Two Numbers

来源:互联网 发布:精华液知乎 编辑:程序博客网 时间:2024/05/16 08:32

 Notes:

跟大数相加一样的原理;

最好在原来的链表上操作,这样最多只用开一个ListNode的空间;

O(n)的算法,竟然TLE !!!没天理啊!!T_T

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {      public ListNode addTwoNumbers(ListNode l1, ListNode l2) {       if(l1 == null){       return l2;       }       if(l2 == null){       return l1;       }   int cnt = 0, sum = 0;   ListNode pListNode = l1, headListNode = l1;   int k = 0;   while(l1.next != null && l2.next != null){   sum = cnt + l1.val + l2.val;   cnt = sum / 10;   sum %= 10;   l1.val = sum;      l1 = l1.next;   l2 = l2.next;    }   sum = cnt + l1.val + l2.val;   cnt = sum / 10;   sum %= 10;   l1.val = sum;      if(l1.next == null && l2.next == null){      }   else{   while(l2.next != null){   l1.next = l2.next;   }   l1 = l1.next;   while(l1.next != null){   sum = cnt + l1.val;   cnt = sum / 10;   sum %= 10;      l1.val = sum;   l1 = l1.next;   }   sum = cnt + l1.val;   cnt = sum / 10;   sum %= 10;      l1.val = sum;       }      if (cnt != 0){   ListNode newNode = new ListNode(cnt);   newNode.next = null;   l1.next = newNode;   }          return headListNode;   }}


0 0
原创粉丝点击