[leetCode 丶 20241202] 2. 两数相加
原题:
https://leetcode.cn/problems/add-two-numbers/description/
描述:
个人版答案
执行用时: 2 ms 执行内存消耗: 43.57 M
/** * 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 soultion; // 临时 List<Integer> temp = new ArrayList<>(); // 终止信号 Integer next = 0; // 循环 while (true) { if (next == 0 && Objects.isNull(l1) && Objects.isNull(l2)) { break; } // 临时变量 int a = 0, b = 0; if (Objects.nonNull(l1)) { a = l1.val; l1 = l1.next; } if (Objects.nonNull(l2)) { b = l2.val; l2 = l2.next; } int i = a + b + next; // 判断是否需要进位 if (i >= 10) { next = 1; temp.add(i - 10); } else { next = 0; temp.add(i); } } if (temp.size() == 1) { return new ListNode(temp.get(0)); } soultion = new ListNode(temp.get(temp.size() - 1)); for (int i = temp.size() - 2; i >= 0; i--) { soultion = new ListNode(temp.get(i), soultion); } return soultion; } }
优秀解法
执行耗时: 1 ms
/** * 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) { int n = 0; int n1 = 0; int n2 = 0; int j = 0; ListNode pre = new ListNode(0); ListNode cur = pre; ListNode cur1 = l1; ListNode cur2 = l2; while(cur1 != null || cur2!=null){ n1 = cur1!=null?cur1.val:0; n2 = cur2!=null ? cur2.val:0; n = n1 + n2 +j; cur.next = new ListNode(n%10); j = n/10; cur = cur.next; cur1= cur1 != null ?cur1.next:null; cur2 = cur2!=null ?cur2.next:null; } if(j == 1){ cur.next = new ListNode(1); } return pre.next; } }
个人解题思路与优秀答案解析
题目分析及个人版思路
- 偷个懒, 顺序做第二题
- 其实就是简单的链表求和. 因为保证数字不以0开头. 那么我们就可以直接个位数加法走起. 循环按照最长的来就行. 所以直接while(true). 直到达到停止条件.
- 计算不用多说, 就是简单的进位时候需要注意减去10. 下一把要加上10. 循环终止条件也要带上这个10是否进位哦. 要不就少一位了.
- 话不多说, 上代码...
进阶版思路
嘿嘿...差不多差不多.
牛牛牛
佬!
佬!
说归说闹归闹,拿什么给我看我都不想要
佬!
牛蛙牛蛙
打卡