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

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

1.题目描述

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

2.解法分析

题目很简单,不用描述了。

/**
* 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) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
 
ListNode *cur1=l1;
ListNode *cur2=l2;
int carrier=0;
int curDigit=0;
ListNode *head;
int flag = 0;
ListNode *prev;
while(cur1!=NULL&&cur2!=NULL)
{
curDigit=(cur1->val+cur2->val+carrier)%10;
carrier=(cur1->val+cur2->val+carrier)/10;
ListNode *cur=new ListNode(curDigit);
 
if(flag==0)
{
head=cur;
prev=cur;
flag =1;
}
else
{
prev->next=cur;
prev=cur;
}
 
cur1=cur1->next;
cur2=cur2->next;
}
 
if(cur1!=NULL||cur2!=NULL)
{
cur1=cur1!=NULL?cur1:cur2;
 
while(cur1!=NULL)
{
curDigit=(cur1->val+carrier)%10;
carrier=(cur1->val+carrier)/10;
ListNode *cur=new ListNode(curDigit);
prev->next=cur;
prev=cur;
cur1=cur1->next;
}
}
 
if(carrier!=0)
{
ListNode *cur=new ListNode(carrier);
prev->next=cur;
}
 
return head;
}
};

转载于:https://www.cnblogs.com/obama/p/3267081.html

你可能感兴趣的文章
Requests请求库
查看>>
request.setCharacterEncoding("utf-8");
查看>>
Svn安装成功后的操作
查看>>
自定义EL函数、自定义JSTL标签
查看>>
多线程与网络之NSURLConnection发送请求
查看>>
走的最急的,都是最美的风景
查看>>
【后缀数组】【poj2774】【 Long Long Message】
查看>>
Javascript - Jquery - 事件
查看>>
linux常用命令--diff
查看>>
约瑟夫环问题
查看>>
游戏网络知识
查看>>
JIRA7.10迁移
查看>>
让oracle做定时任务【转】
查看>>
qt5 make 找不到QApplication
查看>>
关闭或开启memory_target
查看>>
100c之36:不同鸡的数量
查看>>
数据库对数字不限长度的冒泡排序
查看>>
slice切割数组arr=[[0,1],[2,3]]
查看>>
linux自动ftp上传与下载文件的简单脚本
查看>>
❀❀ selenium 学习网站 ★★★★★
查看>>