博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode Add Two Numbers
阅读量:4108 次
发布时间:2019-05-25

本文共 2632 字,大约阅读时间需要 8 分钟。

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

这个题思路很easy,但是写的时候细节多,要判断好边界条件。

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {        if(l1 == NULL) return l2;        if(l2 == NULL) return l1;        ListNode* l3 = l1;        int sum = 0;        int nv = 0;        while(l1->next != NULL && l2->next != NULL){            sum = l1->val + l2->val + nv;            if(sum >=10) {                nv = 1;                 sum -= 10;               }else nv = 0;            l1->val = sum;            l1 = l1->next;            l2 = l2->next;        }        if(l1->next == NULL && l2->next == NULL){            sum = l1->val + l2->val + nv;            if(sum >=10) {                l1->val = sum-10;                ListNode *p = new ListNode(1);                l1->next = p;            }else l1->val = sum;        }else{        if(l1->next != NULL){            sum = l1->val + l2->val + nv;            if(sum >=10){                nv =1;                sum -= 10;            }else nv =0;            l1->val = sum;            l1 = l1->next;            while(l1->next != NULL){            sum = l1->val + nv;            if(sum >=10) {                nv = 1;                 sum -= 10;               }else nv = 0;            l1->val = sum;            l1 = l1->next;           }           if(nv == 1){            l1->val = l1->val +nv;            if(l1->val >= 10){                l1->val -= 10;                ListNode *p = new ListNode(1);                l1->next = p;             }          }         }        if(l2->next != NULL){            sum = l1->val + l2->val + nv;            if(sum >=10){                nv =1;                sum -= 10;            }else nv =0;            l1->val = sum;            l2 = l2->next;            l1->next = l2;            while(l2->next != NULL){            sum = l2->val + nv;            if(sum >=10) {                nv = 1;                 sum -= 10;               }else nv = 0;            l2->val = sum;            l2 = l2->next;           }           if(nv == 1){            l2->val = l2->val +nv;            if(l2->val >=10){                l2->val -= 10;                 ListNode *p = new ListNode(1);                l2->next = p;            }          }         }      }        return l3;    }};

转载地址:http://gctsi.baihongyu.com/

你可能感兴趣的文章
Step By Step(Lua数据结构)
查看>>
Step By Step(Lua编译执行与错误)
查看>>
Step By Step(Lua迭代器和泛型for)
查看>>
Step By Step(Lua函数)
查看>>
Step By Step(Lua表达式和语句)
查看>>
Step By Step(Lua基础知识)
查看>>
Step By Step(Lua开篇)
查看>>
Step By Step(编写C函数的技巧)
查看>>
Step By Step(userdata)
查看>>
lua学习:把lua文本文件“编译”成二进制的文本
查看>>
Lua编译器
查看>>
Lua解释器
查看>>
Notepad++ 16进制编辑功能
查看>>
N沟道增强型MOS管双向低频开关电路
查看>>
VS2010点滴——不能将参数 1 从“const char [11]”转换为“LPCWSTR”
查看>>
error C2065: “CString”: 未声明的标识符
查看>>
Building MFC application with /MD[d] (CRT dll version)requires MFC shared dll version~~~~
查看>>
error C2668: “pow”: 对重载函数的调用不明确
查看>>
详解C语言字节对齐
查看>>
Long Long、__int64使用总结
查看>>