ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

LeetCode --- 2. Add Two Numbers
2015-07-20 17:23:14 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:1´Î
Tags£ºLeetCode --- Add Two Numbers

ÌâÄ¿Á´½Ó£ºAdd Two Numbers

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)

Output: 7 -> 0 -> 8

ÕâµÀÌâµÄÒªÇóÊǽ«ÓÃÁ´±í±íʾµÄÁ½¸öÊý£¨Êý×ÖÒÔÏ෴˳Ðò´æ´¢£©Ïà¼Ó£¬²¢·µ»Ø¼ÓºÍÖ®ºóµÄÁ´±í¡£

˼·ÊÇÊ×ÏȽ«µÚ¶þ¸öÁ´±íµÄÿ¸ö½Úµã¼Óµ½µÚÒ»¸öÁ´±í¶ÔÓ¦µÄ½ÚµãÉÏ£¨µ±È»Ð½¨Á´±í½ÚµãÒ²¿ÉÒÔ£©£¬È»ºóÈç¹ûµÚ¶þ¸öÁ´±íÓÐÊ£Ó࣬¾Í½«ÆäÈ«²¿¼Óµ½µÚÒ»¸öÁ´±íºóÃæ¡£×îºóÔÙÒÀ´Î´¦Àí½øÎ»¡£ÖµµÃ×¢ÒâµÄÊÇ×îºóµÄ½øÎ»Å¶¡£¡£¡£

ʱ¼ä¸´ÔÓ¶È£ºO(n)

¿Õ¼ä¸´ÔÓ¶È£ºO(1)

 1 class Solution
 2 {
 3 public:
 4     ListNode *addTwoNumbers(ListNode *l1, ListNode *l2)
 5     {
 6         if(l1 == NULL)
 7             return l2;
 8         if(l2 == NULL)
 9             return l1;
10         
11         ListNode *p1 = l1, *p2 = l2;
12         while(p1 -> next != NULL && p2 -> next != NULL)
13         {
14             p1 -> val += p2 -> val;
15             
16             p1 = p1 -> next;
17             p2 = p2 -> next;
18         }
19         p1 -> val += p2 -> val;
20         
21         if(p1 -> next == NULL)
22             p1 -> next = p2 -> next;
23         
24         int a, c = 0;
25         ListNode *p = l1;
26         while(p -> next != NULL)
27         {
28             a = p -> val + c;
29             p -> val = a % 10;
30             c = a / 10;
31             
32             p = p -> next;
33         }
34         a = p -> val + c;
35         p -> val = a % 10;
36         c = a / 10;
37         
38         if(c == 1)
39         {
40             ListNode *pln = new ListNode(1);
41             p -> next = pln;
42         }
43         
44         return l1;
45     }
46 };

ÉÏÃæ´úÂëÌ«³¤ÁË¡£¡£¡£ÏÂÃæÔÚÁ½¸öÁ´±í¶ÔÓ¦½ÚµãÏà¼ÓµÄʱºò£¬Í¬Ê±ÓñäÁ¿cά»¤½øÎ»£¬ÕâÑù1´ÎÑ­»·¾Í¶¼¸ã¶¨ÁË¡£

 1 class Solution
 2 {
 3 public:
 4     ListNode *addTwoNumbers(ListNode *l1, ListNode *l2)
 5     {
 6         ListNode *h = new ListNode(0), *cur = h;
 7         int c = 0;
 8         while(l1 != NULL || l2 != NULL)
 9         {
10             int a1 = l1 != NULL ? l1 -> val : 0;
11             int a2 = l2 != NULL ? l2 -> val : 0;
12             int a = a1 + a2 + c;
13             c = a / 10;
14             cur -> next = new ListNode(a % 10);
15             cur = cur -> next;
16             if(l1 != NULL)
17                 l1 = l1 -> next;
18             if(l2 != NULL)
19                 l2 = l2 -> next;
20         }
21         if(c > 0)
22             cur -> next = new ListNode(c);
23         return h -> next;
24     }
25 };

?

¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£º»ùÓÚluceneµÄ°¸Àý¿ª·¢£ºParseUtil.. ÏÂһƪ£ºpoj-1789 Truck History

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Spring Boot Java£º (2025-12-26 16:20:19)
¡¤Spring Boot¤ÇHello (2025-12-26 16:20:15)
¡¤Spring ¤Î»ù±¾¤«¤éŒ (2025-12-26 16:20:12)
¡¤C++Ä£°å (template) (2025-12-26 15:49:49)
¡¤C ÓïÑÔÖÐÄ£°åµÄ¼¸ÖÖ (2025-12-26 15:49:47)