Leetcode--Add Two Numbers

这个题很像大数相加,一共有三个思路:

第一种:迭代写法。

考虑三种情况:
1.l1与l2都为null时,返回进位值。
2.l1与l2有一个为null时,返回那个不为null的值
3.l1与l2都不为null时,考虑链表长度不一样,小的那个链表以0代替。
代码如下:java实现:

public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode head = new ListNode(0);
        if(l1==null && l2==null ){
            return head;
        }
        int sum = 0; int carry = 0;
        ListNode curr = head;
        while(l1 != null || l2 != null){
            int num1 = l1 == null? 0 :l1.val;
            int num2 = l2 == null? 0 :l2.val;
            sum = num1 + num2 + carry;
            curr.next = new ListNode(sum%10);
            curr = curr.next;
            carry = sum /10;
            l1 = l1 == null? null : l1.next;
            l2 = l2 == null? null : l2.next;
        }
        if(carry != 0){
            curr.next = new ListNode(carry);
        }
        return curr.next;
    }
}
第二种:递归写法:
public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        return helper(l1,l2,0);
    }

    public ListNode helper(ListNode l1, ListNode l2, int carry){
        if(l1==null && l2==null){
            return carry == 0? null : new ListNode(carry);
        }
        if(l1==null && l2!=null){
            l1 = new ListNode(0);
        }
        if(l2==null && l1!=null){
            l2 = new ListNode(0);
        }
        int sum = l1.val + l2.val + carry;
        ListNode curr = new ListNode(sum % 10);
        curr.next = helper(l1.next, l2.next, sum / 10);
        return curr;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 如图,就是把两个链表里的值逐个相加,满10进1 链表的结构体 代码在这里 时间复杂度是O(n) 思路 1:创建一个...
    齊葩阅读 302评论 0 0
  • 原题: https://leetcode.com/problems/add-two-numbers/descrip...
    Azurelore阅读 137评论 0 0
  • 一、题目——Add Two Numbers You are given twonon-emptylinked li...
    Juliiii阅读 231评论 0 0
  • 早上吃了腐竹菜,喝了可乐姜丝汤 中午吃了两排饼干 晚上吃了蔬菜和米饭 夜宵又吃了一排饼干 今天吃的太多了,尤其是晚...
    最佳姐妹阅读 439评论 0 0
  • 好像想起他的次数变少了。当初那种幸福的感觉早已消失不见。曾经那段时光真的很美好。可是毕业后。就再也没有感受过那种沐...
    张梦蝶蝶蝶阅读 226评论 0 0