阿里云虚拟主机建网站宁波模板建站多少钱
web/
2025/10/4 19:49:47/
文章来源:
阿里云虚拟主机建网站,宁波模板建站多少钱,电脑网站设计制作,wordpress 改登录界面题型#xff1a;链表
链接#xff1a;2. 两数相加 - 力扣#xff08;LeetCode#xff09;
来源#xff1a;Leet 题目描述
给你两个 非空 的链表#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的#xff0c;并且每个节点只能存储 一位 数字。 …题型链表
链接2. 两数相加 - 力扣LeetCode
来源Leet 题目描述
给你两个 非空 的链表表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的并且每个节点只能存储 一位 数字。
请你将两个数相加并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外这两个数都不会以 0 开头。
题目样例
示例 1 输入l1 [2,4,3], l2 [5,6,4]
输出[7,0,8]
解释342 465 807.示例 2
输入l1 [0], l2 [0]
输出[0]示例 3
输入l1 [9,9,9,9,9,9,9], l2 [9,9,9,9]
输出[8,9,9,9,0,0,0,1]提示
每个链表中的节点数在范围 [1, 100] 内0 Node.val 9题目数据保证列表表示的数字不含前导零
题目思路
少有的【简单的中等题】
样例很清晰感觉就是链表版的模拟各数累加。
笔者这边直接在原链表上进行操作如果题目要求【不改变原链表结构】可以自己开一个新的链表。
为了便于操作笔者这里强行让链表1为长链表。然后可以分情况①等长时 ②不等长时。
考虑到【进位】可以创一个int来存一下但要记得【进位加完一次后归零】。
等长时遍历两个链表指针同步走。如果最终加完后还有进位需要创一个新结点来作为尾结点。笔者这里事先接收了尾指针方便操作
不等长时就是先按着等长来走。短的链表走到头后长链表自己一个人走我哭死
C代码
笔者已经哭死了所以上code
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode *temp1 l1,*temp2 l2;int len10,len20;int i0,j0;while(temp1 ! NULL) {len1;temp1 temp1-next;}while(temp2 ! NULL) {len2;temp2 temp2-next;}//保证l1一定是长链表 if(len1 len2){swap(len1,len2);swap(l1,l2);}int sum0;ListNode *ans l1;ListNode * us;while(l1 ! NULL l2 ! NULL){if(l1 -next NULL)us l1;int tempal1-val,tempbl2-val,tempcsum;l1-val (l1-val l2-val sum)%10;sum 0;sum((tempatempbtempc)/10);l1 l1-next;l2 l2-next;}while(l1 ! NULL){ if(l1 -next NULL)us l1;int tempal1-val,tempcsum;l1-val (l1-val sum)%10;sum0;sum(tempatempc)/10;l1 l1-next; }if(l1 NULL sum !0){ListNode * fin new ListNode(sum);us-next fin;}return ans;}
};
结算页面
有待优化感觉冗余的代码有些多。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86964.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!