lc 第二题 addTwoNumbers 两数相加

文章讲述了在处理链表加法问题时,如何通过创建额外的head节点和result节点来维护链表。通过操作result.next来构建新链表,最终返回head.next作为结果。同时提到了三目运算符在判断进位时的应用。
摘要由CSDN通过智能技术生成

lc 上给你的模板注释不用管 可以直接用 

当你使用result来计算加和时 result是一直往前走的 无法回到 listnode的头,所以需要创建一个head 链表 然后让result等于head 通过改变result来改变head 最后返回head。

class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

class Solution {
    public ListNode test(){
        ListNode head = new ListNode(0);
        /**
         * 可以看成传head的引用给res,
         * 对res.next进行操作也会改变head.next,
         * 而当我们将res往链表尾部移动时,head并不会随之移动。
         */

        ListNode res = head;

        /**
         * 移动res进行创建链表或者修改已有链表,
         * 始终只对res.next进行操作,(目的:不对head头结点造成影响)
         * 最终只需返回head.next就可以得到链表的头结点,
         * 此时该头结点也是链表的子结点,其数据也有实际意义。
         */
        /**
         * ...
         * ...
         * ...
         * ...一段对res结点进行链表相关操作的代码
         */

        return head.next;
    }
}
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode head=new ListNode(-1){};
        ListNode result=head;
        int flag=-1;
        while(l1!=null||l2!=null){
            int num1=0;
            int num2=0;
            if(l1!=null)    {
                num1=l1.val;
                l1=l1.next;
            }
            if(l2!=null)    {
                num2=l2.val;
                l2=l2.next;
            }
            int temp=(flag>0?num1+num2+1:num1+num2);
            flag=-1;
            if(temp>=10){
                result.next=new ListNode(temp-10);
                flag=1;
            }else{
                result.next=new ListNode(temp);
            }
            result=result.next;
        }
        if(flag==1){
            result.next=new ListNode(1);
        }
        return head.next;
    }
}

完美 哈哈哈哈

 三目运算符还是不熟悉

int getLarge = a > b ? a : b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值