镇江还有什么网站吗,如何用dw制作网页,商会网站建设招标方案,wordpress没有加载图片记录一下算法题的学习11
两数相加 题目#xff1a;给你两个非空的链表#xff0c;表示两个非负的整数。它们每位数字都是按照逆序的方式存储的#xff0c;并且每个节点只能存储一位数字。请你将两个数相加#xff0c;并以相同形式返回一个表示和的链表。你可以假设除了数字…记录一下算法题的学习11
两数相加 题目给你两个非空的链表表示两个非负的整数。它们每位数字都是按照逆序的方式存储的并且每个节点只能存储一位数字。请你将两个数相加并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外这两个数都不会以 0 开头。 思路 将两个链表看成是相同长度的进行遍历如果一个链表较短则在前面补 0举例说明342465807长度一样不考虑,9999999000999910009998每一位计算的同时需要考虑上一位的进位问题而当前位计算结束后同样需要更新进位值如果两个链表全部遍历完毕后进位值为 1则在新链表最前方添加节点 1 示例分析 1 输入l1 [2,4,3], l2 [5,6,4]
输出[7,0,8] 示例分析2 输入l1 [9,9,9,9,9,9,9], l2 [9,9,9,9]
输出[8,9,9,9,0,0,0,1]代码展示 class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode headnew ListNode(0);//初始化头结点为0ListNode tailhead;//初始化尾节点为0int carry0;//初始化进位为0while(l1!null||l2!null){int xl1!null?l1.val:0;//三元运算符进行判断,例如如果xli的情况下节点不为空那么就选择l1.val,否则节点值为0int yl2!null?l2.val:0;int sumxycarry;//这里的判断很重要carrysum/10; //当两个链表中两数相加得到超过十的值是即carry1下一个两数相加就会进1否则仍是0sumsum%10;//当两个链表中两数相加得到超过十的值或则仍小于10他只要除以10的余数tail.nextnew ListNode(sum); //存入链表tailtail.next;if(l1!null){l1l1.next;}if(l2!null){l2l2.next;}}if(carry0){tail.nextnew ListNode(carry);}return head.next;}
}
结束拜拜