开发工具与关键技术: C#作者:奶糖不甜撰写工夫:2022.3.7
    C#是微软公司公布的一种由C和C++衍生进去的面向对象的编程语言、运行于.NET Framework和.NET Core之上的高级程序设计语言.并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成绩.C#看起来与Java有着惊人的类似;它包含了诸如繁多继承、接口、与Java简直同样的语法和编译成中间代码再运行的过程.然而C#与Java有着显著的不同,它借鉴了Delphi的一个特点,与COM是间接集成的,而且它是微软公司 .NET windows网络框架的配角.

题目形容:

给你两个非空的链表,示意两个非负的整数.它们每位数字都是依照逆序的形式存储的,并且每个节点只能存储 一位数字.请你将两个数相加,并以雷同模式返回一个示意和的链表.
你能够假如除了数字 0 之外,这两个数都不会以 0 结尾,每个链表中的节点数都在范畴[1, 100]之内.

示例:

输出l1 = [2, 4, 3], l2 = [5, 6, 4].后果输入为[7, 0, 8].
解释:342 + 465 = 807.

最清晰解法:

链表的计算方法,首先想到的就是进位,设置进位值.因为题目表明链表是逆序相加,所以第一位也就是个位数先进行计算,更加不便确定是否有进位值。

设置进位值num,将每次l1, l2, num三个值加起来为mid,位数为mid%10,大于10则进位为mid/10,实例如下:

public class Solution {    public ListNode AddTwoNumbers(ListNode l1, ListNode l2, int num = 0)     {        if(l1 == null && l2 == null)        {            if(num != 0) return new ListNode(num);            else return null;        }        int mid = (l1?.val ?? 0) + (l2?.val ?? 0) + num;        ListNode listnode = new ListNode(mid % 10);        listnode.next = AddTwoNumbers(l1?.next, l2?.next, mid/10);        return listnode;    }}

:解说一下问号的用法.

? 可空类型修饰符,使值类型也可为空.a??b 空合并运算符,当a为null时则返回b,a不为null时则返回a自身.?. null查看运算符,如果对象为NULL,则不进行前面的获取成员的运算,间接返回null.

在这里判断l1,l2是否为空,用于解决l1、l2链表长度不一样的状况.