首页 > 其他分享 >【大数相加链表模拟】

【大数相加链表模拟】

时间:2023-12-14 17:38:36浏览次数:30  
标签:ListNode val 大数 相加 next 链表 tail carry null

leetcode 2. 两数相加

题意:两个长度为[1, 100]的大数,分别倒序存储(个位在链表头)在两个链表中,计算两个数的和,并倒序存储在一个新链表,返回链表表头。数据中不存在前导零。

题解:模拟大数相加,注意维护进位carry即可

代码
/**
 * 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, tail;
        head = tail = null;
        int carry = 0;
        while(l1 != null || l2 != null) {
            int val1 = 0, val2 = 0;
            if(l1 != null) val1 = l1.val;
            if(l2 != null) val2 = l2.val;
            int sum = val1 + val2 + carry;
            if(sum >= 10) {carry = 1; sum %= 10;}
            else carry = 0;
            if(head == null) {
                head = tail = new ListNode(sum, null);
            } else {
                tail.next = new ListNode(sum, null);
                tail = tail.next;
            }
            if(carry == 1) tail.next = new ListNode(carry, null);
            if(l1 != null) l1 = l1.next;
            if(l2 != null) l2 = l2.next;
        }
        return head;
    }
}

标签:ListNode,val,大数,相加,next,链表,tail,carry,null
From: https://www.cnblogs.com/Eve7Xu/p/17901617.html

相关文章

  • 【回文链表】快慢指针+反转链表
    leetcode234.回文链表题意:判断一个链表是不是回文(中心对称)的【反转链表】题解1:得到原链表的反转链表,然后对比原链表与反转链表的内容是否一致即可。反转链表版本代码/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNo......
  • 大数据实验2
    实验内容与完成情况:向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,则由用户来指定是追加到原有文件末尾还是覆盖原有的文件; 从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名; 将HDFS中指定文件的内容输出到终端中; 显示HDF......
  • 【反转链表】while循环/递归
    leetcode206.反转链表题意:给定链表表头,反转链表,返回反转链表的表头【循环】题解:head维护原链表当前节点,nHead维护反转链表的头节点,nHead置于head前一位,依次后移,直至head到链表尾结束。双指针循环版本/***Definitionforsingly-linkedlist.*publicclassListNode......
  • 数据结构:双链表
    由于双链表中大部分操作其实和单链表操作类似,所以这里只挑关键的一些函数1、定义与初始化typedefstructDNode{ElementTypedata;structDNode*prior,*next;}DNode,*DLinkList;boolInitialDLinkList(DLinkList&L){L=(DNode*)malloc(sizeof(DNode));......
  • 大数进阶(1)——前言与定义
    基于OCF,我们迈入序数与基数之路,登神长阶我们进入不可计算的领域,需要的则是底层的集合论与数理逻辑学术界对于序数分析(OrdinalAnalysis)的研究起源于证明论序数(ProofTheoryOrdinal),由此诞生的则是前沿的目标大饼,离我们最近的也许是\(PTO(Z_2)\),不过这个对数理逻辑要求太高,我......
  • 大数据企业怎样使用IP代理进行数据抓取
    前言大数据企业通常需要从各种网站和在线平台上进行数据抓取和数据挖掘。然而,许多网站限制了对其内容的访问,使用IP代理是一种常见的解决方案。在本文中,我将介绍大数据企业如何使用IP代理进行数据抓取,并提供相应的代码示例。一、什么是IP代理IP代理是一种允许用户通过第三方服务器......
  • Python 初学之华为OD机试题:求最大数字
    题目描述给定一个由纯数字组成以宇符串表示的数值,现要求字符串中的每个数字最多只能出现2次,超过的需要进行删除;删除某个重复的数字后,其它数字相对位置保持不变。如"34533”,数字3重复超过2次,需要册除其中一个3,删除第一个3后获得最大数值"4533"。请返回经过删除操作后的最大的数值......
  • 【交叉链表】Java哈希表——HashSet类/双指针
    leetcode160.相交链表题意:给定两个链表A、B的表头节点,找到链表交叉节点(地址值相同)。链表A长度为m,链表B长度为n,范围在[1,3e4]题解1:根据哈希表去重的原理,使用哈希表集合HashSet来维护链表节点,默认比较节点地址值。将链表A中的节点全部add进HashSet中,然后遍历链表B中的节点,如果......
  • 2023/12/10 链表
    #include<iostream>usingnamespacestd;typedefintElemType;//自定义链表数据元素为整数structLNode{ElemTypedata;LNode*next;};//初始化链表,返回值:失败返回nullptr,成功返回头结点地址LNode*InitList(){LNode*head=newLNode;//分配头结点......
  • 基于DAMON的LRU链表排序 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/admin-guide/mm/damon/lru_sort.htmlDAMON-basedLRU-listsSortingDAMON-basedLRU-listsSorting(DAMON_LRU_SORT)是一个静态内核模块,旨在用于基于主动和轻量级数据访问模式的(去)优先级排序,以使LRU列表成为更可信赖的数据访问模式源......