LeetCode 2. 两数相加

迭代

java

/**
* Definition for singly-linked list.
**/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode p = l1;
ListNode q = l2;
ListNode result = new ListNode();
ListNode o = result;
int carray = 0;
while(p!=null && q!=null){
int sum = p.val + q.val + carray;
o.next = new ListNode(sum%10);
carray=sum/10;
p = p.next;
q = q.next;
o = o.next;
}
while(p!=null){
int sum = carray + p.val;
o.next = new ListNode(sum%10);
carray = sum/10;
o = o.next;
p = p.next;
}
while(q!=null){
int sum = carray + q.val;
o.next = new ListNode(sum%10);
carray = sum/10;
o = o.next;
q = q.next;
}
if(carray==1){
o.next = new ListNode(1);
}
return result.next;
}
}

C++

/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* result = new ListNode();
ListNode* res = result;
ListNode* p = l1;
ListNode* q = l2;
int carray = 0;
int sum = 0;
while(p!=nullptr && q !=nullptr){
sum = p->val + q->val + carray;
carray = sum/10;
res->next = new ListNode(sum%10);
p = p->next;
q = q->next;
res = res->next;
}
while(p!=nullptr){
sum = p->val + carray;
carray = sum/10;
res->next = new ListNode(sum%10);
res = res->next;
p = p->next;
}
while(q!=nullptr){
sum = q->val + carray;
carray = sum/10;
res->next = new ListNode(sum%10);
res = res->next;
q = q->next;
}
if(carray!=0){
res->next = new ListNode(carray);
}
return result->next;
}
};

递归

Java

class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int total = l1.val + l2.val;
int next = total/10;
ListNode res = new ListNode(total%10);
if(l1.next!=null || l2.next!=null || next != 0){
if(l1.next==null){
l1 = new ListNode(0);
}else{
l1 = l1.next;
}
if(l2.next==null){
l2 = new ListNode(0);
}else{
l2 = l2.next;
}
l1.val += next;
res.next = addTwoNumbers(l1,l2);
}
return res;
}
}

C++

/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int sum = l1->val + l2->val;
int next = sum/10;
ListNode* res = new ListNode(sum%10);
if(l1->next!=nullptr || l2->next!=nullptr || next !=0){
if(l1->next==nullptr){
l1 = new ListNode(0);
}else{
l1 = l1->next;
}
if(l2->next==nullptr){
l2 = new ListNode(0);
}else{
l2 = l2->next;
}
l1->val+=next;
res->next = addTwoNumbers(l1,l2);
}
return res;
}
};
posted @   破忒头头  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示