首页 > 其他分享 >(链表)11-链表相加

(链表)11-链表相加

时间:2023-11-13 23:13:23浏览次数:28  
标签:11 current ListNode head2 head1 相加 next 链表 null

 

 

 1 import java.util.*;
 2 
 3 /*
 4  * public class ListNode {
 5  *   int val;
 6  *   ListNode next = null;
 7  * }
 8  */
 9 
10 public class Solution {
11     /**
12      *
13      * @param head1 ListNode类
14      * @param head2 ListNode类
15      * @return ListNode类
16      */
17     public ListNode addInList (ListNode head1, ListNode head2) {
18         // 翻转两个入参链表
19         head1 = reverseList(head1);
20         head2 = reverseList(head2);
21         // 创建新链表作为返回结果
22         ListNode root = new ListNode(-1);
23         ListNode current = root;
24         // 进位符号
25         int flag = 0;
26         // 依次相加
27         while(head1 != null || head2 != null || flag != 0) {
28             // 计算当前位的结果
29             int val1 = (head1 == null) ? 0 : head1.val;
30             int val2 = (head2 == null) ? 0 : head2.val;
31             int temp = val1 + val2 + flag;
32             flag = temp / 10;
33             temp = temp % 10;
34             // 返回结果中增加新的节点
35             ListNode newNode = new ListNode(temp);
36             current.next = newNode;
37             current = current.next;
38             // 移动到下一位进行计算
39             if (head1 != null) {
40                 head1 = head1.next;
41             }
42             if (head2 != null) {
43                 head2 = head2.next;
44             }
45         }
46         // 返回结果
47         return reverseList(root.next);
48     }
49 
50     public ListNode reverseList(ListNode head) {
51         // 申请临时变量
52         ListNode current = head;
53         ListNode pre = null;
54         // 依次调换指针的方向
55         while (current != null) {
56             // 记录下个要处理的节点
57             ListNode next = current.next;
58             // 调换当前节点的指针方向
59             current.next = pre;
60             // 移动到下个要处理的节点
61             pre = current;
62             current = next;
63         }
64         // 返回调换后的头节点
65         return pre;
66     }
67 }

 

标签:11,current,ListNode,head2,head1,相加,next,链表,null
From: https://www.cnblogs.com/StringBuilder/p/17830548.html

相关文章

  • 11.13 模拟赛小记
    30+0+10+0全真模拟。今天的模拟赛有一种格外的说不上来的绝望的感觉。很不好描述的。一直在想如果这是真实的noip赛场那我不就大寄特寄了。下午因为不舒服所以玩了一下午(?)一直在机惨别人(?)玩的很开心。但还是想看大家在机房跳钢管舞喵(?A.game赛时看到这个题之后就变得很愚蠢。......
  • [链表] 1-反转链表
    1/*2publicclassListNode{3intval;4ListNodenext=null;56ListNode(intval){7this.val=val;8}9}*/10publicclassSolution{11publicListNodeReverseList(ListNodehead){12//申请临时变......
  • [链表] 2-链表内指定区间反转
    ----------......
  • [链表] 3-链表中的节点每K个一组反转
    --------------------......
  • 11.3
    -今天完成了一个分级测试,主要包括不同用户登录的选课系统,主要功能如下:(1)能够在Tomcat服务器中正确部署,并通过浏览器查看;(2)网站页面整体风格统一;(3)首页(登录页)要求实现不同用户登录后,进入的功能页不相同。(4)教师功能页:有添加课程、修改个人信息、浏览选课学生信息三个模块。(5)学......
  • 11.13
    本周从周一上完课,把那天的学长的期中考试写完,就放松了,没继续练,就把idea一关啥也没关,然后除了正常写作业,已经周二晚上周三早上背了背英语,来应对老师的听写测验,学习的时间分配很少,感觉好像期中考试完了之后,就放松了,周末三天更是除了写了点离散数学作业,一点没学习,导致本周一的分级测......
  • 2023/11/13(可对角化)
    ......
  • 20231113
    2023/11/13codeforces906(div2)补题A.SortingwithTwos题意:给一个长度为n的数组,可以做任意次以下操作:选择一个整数m,将1-2^m的数减1。若能使数组变为一个单调递增的数组则输出YES,否则输出NO思路:一个区间的右边界和他的右边是无所谓大小的,因为我们可以整段减来使其一定单......
  • 11.1
    Java项目中常用的异常处理情况包括try-catch语句、throws关键字、自定义异常等。try-catch语句用于捕获和处理异常,可以有多个catch语句,需要注意顺序。throws关键字用于声明方法可能抛出的异常类型。自定义异常需要继承自Exception类或其子类。finally语句在异常处理中非常重要,可以......
  • 11.3
    运行时异常都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般由程序逻辑错误引起,程序应该从逻辑角度尽可能避免这类异常的发生。......