链表相加(Add Two Numbers)
2024-08-29 07:56:52
描述:
给定两个非空的链表,表示两个非负整数。数字以相反的顺序存储,每个节点包含一个数字。添加两个数字并将其作为链表返回。
您可以假设两个数字不包含任何前导零,除了数字0本身。
输入:(2 - > 4 - > 3)+(5 - > 6 - > 4)
输出: 7 - > 0 - > 8
类似于:342+564 = 807
LeetCode解决方案:
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummyHead = new ListNode(0);
ListNode p = l1, q = l2, curr = dummyHead;
int carry = 0;
while (p != null || q != null) {
int x = (p != null) ? p.val : 0;
int y = (q != null) ? q.val : 0;
int sum = carry + x + y;
carry = sum / 10;
curr.next = new ListNode(sum % 10);
curr = curr.next;
if (p != null) p = p.next;
if (q != null) q = q.next;
}
if (carry > 0) {
curr.next = new ListNode(carry);
}
return dummyHead.next;
}
我的方法:
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummyHead = new ListNode(0);
ListNode p = l1, q = l2, curr = dummyHead;
int carry = 0;
while (true) {
//做相加
int x = (p != null) ? p.val : 0;
int y = (q != null) ? q.val : 0;
int sum = carry + x + y;
curr.val = sum % 10;
//重新赋值carry、p、q和curr
carry = sum / 10; if (p != null) p = p.next;
if (q != null) q = q.next;
if(p == null && q == null) break; curr.next = new ListNode(0);
curr = curr.next; }
if (carry > 0) {
curr.next = new ListNode(carry);
}
return dummyHead;
}
}
最新文章
- 服务器一般达到多少qps比较好[转]
- 也来说说C/C++里的volatile关键字
- jQuery原生框架-----------------dom操作
- canvas beginPath()
- MySQL的学习--用户创建授权
- const int * p 和 int const * p 和 int * const p 的区别
- Android SDK Manager 在win8.1上的闪退问题
- C# == equals 本质理解
- Ubuntu下jdk配置
- Linux select TCP并发服务器与客户端编程
- iOS开发实现登陆
- ZOJ 3326 An Awful Problem 模拟
- php中常用的字符串长度函数strlen()与mb_strlen()实例解释
- 简单的sql调优(批处理)
- Elasticsearch大规模时序索引如何治理和规划
- windows eclipse直接访问远程linux hadoop开发环境配置(符合实际开发的做法)
- 从Kubernetes到“云原生全家桶”,网易如何让业务部署提效280%?
- tensorflow笔记:多层LSTM代码分析
- eclipse default handler IHandler interface “the chosen operation is not enabled”
- Weekly linux and ConferenceByYear(2002-now)