首页 > 其他分享 >面试必刷TOP101:11、链表相加(二)

面试必刷TOP101:11、链表相加(二)

时间:2023-10-24 22:06:22浏览次数:33  
标签:11 ListNode head2 head1 next 链表 必刷 null

一、题目

面试必刷TOP101:11、链表相加(二)_反转链表

二、题解

反转链表:

public ListNode addInList (ListNode head1, ListNode head2) {
        // 进行判空处理
        if(head1 == null)
            return head2;
        if(head2 == null){
            return head1;
        }
        // 反转h1链表
        head1 = reverse(head1);
        // 反转h2链表
        head2 = reverse(head2);
        // 创建新的链表头节点
        ListNode head = new ListNode(-1);
        ListNode nHead = head;
        // 记录进位的数值
        int tmp = 0;
        while(head1 != null || head2 != null){
            // val用来累加此时的数值(加数+加数+上一位的进位=当前总的数值)
            int val = tmp;
            // 当节点不为空的时候,则需要加上当前节点的值
            if (head1 != null) {
                val += head1.val;
                head1 = head1.next;
            }
            // 当节点不为空的时候,则需要加上当前节点的值
            if (head2 != null) {
                val += head2.val;
                head2 = head2.next;
            }
            // 求出进位
            tmp = val/10;
            // 进位后剩下的数值即为当前节点的数值
            nHead.next = new ListNode(val%10);
            // 下一个节点
            nHead = nHead.next;

        }
        // 最后当两条链表都加完的时候,进位不为0的时候,则需要再加上这个进位
        if(tmp > 0){
            nHead.next = new ListNode(tmp);
        }
        // 重新反转回来返回
        return reverse(head.next);
    }

    // 反转链表
    ListNode reverse(ListNode head){
        if(head == null)
            return head;
        ListNode cur = head;
        ListNode node = null;
        while(cur != null){
            ListNode tail = cur.next;
            cur.next = node;
            node = cur;
            cur = tail;
        }
        return node;
    }

标签:11,ListNode,head2,head1,next,链表,必刷,null
From: https://blog.51cto.com/u_16244372/8010105

相关文章

  • 数据结构之链表(Java)
    一:概述数组是严格的正规军,那么链表就是灵活多变的地下党链表是一种在物理上非连续、非顺序的数据结构,由若干节点(node)所组成单向链表的每一个节点又包含两部分,一部分是存放数据变量的data,另一部分是指向下一节点的指针next.二:链表的具体说明<1>链表的基本操作总括*链表的基......
  • LeetCode 11. 盛最多水的容器
    盛水最多的容器题目链接11.盛最多水的容器给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i,0)和(i,height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。**说明:**你不能倾斜容器......
  • LeetCode 611. 有效三角形的个数
    有效三角形的个数题目链接611.有效三角形的个数给定一个包含非负整数的数组nums,返回其中可以组成三角形三条边的三元组个数。示例1:输入:nums=[2,2,3,4]输出:3解释:有效的组合是:2,3,4(使用第一个2)2,3,4(使用第二个2)2,2,3示例2:输入:nums=[4,2,......
  • Databend 开源周报第 116 期
    Databend是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn。What'sOnInDatabend探索Databend本周新进展,遇到更贴近你心意的Databend。特性预览:使用SQL管理后台任务此前,Databend引入了......
  • Databend 开源周报第 116 期
    Databend是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn。What'sOnInDatabend探索Databend本周新进展,遇到更贴近你心意的Databend。特性预览:使用SQL管理后台任务此前,Databend引入了后......
  • 关于Linux下Weblogic环境X11图形化处理问题
    转:使用图形验证码的时候报错的关于Linux下Weblogic环境X11图形化处理问题  Java异常处理之InvocationTargetException(反射异常)打印异常......
  • 1129.热浪
    最短路模板题#include<stdio.h>#include<stdlib.h>#include<queue>#include<algorithm>#include<vector>#include<cstring>#defineR(x)x=read()usingnamespacestd;typedefpair<int,int>PII;constintN=251......
  • 1128. 信使
    这道题要求的就是最短路中的最大值注意:Floyd算法中第一重循环是[1,n]而不是[1,n),因为1~n中任何一个点都有可能是中转点。#include<iostream>#include<algorithm>#include<cstring>usingnamespacestd;constintN=105;intn,m,f[N][N],ans;intmain(){......
  • PAT 甲级【1011 World Cup Betting】
    importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.StreamTokenizer;publicclassMain{@SuppressWarnings("unchecked")publicstaticvoidmain(String[]args)throwsIOException{StreamTokenizerin=ne......
  • Oracle数据报ora-01109错误解决方法
    Oracle数据库报ORA-01109错误的解决方法:题目:解决方式:1、先把数据库实例shutdownimmediate关闭;2、把报错的数据文件进行脱机处理;执行alterdatabasedatafile'错误文件位置'offline;3、再次执行alterdatabaseopen或者startup,即可正常运行数据库; ......