欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > LCR 025

LCR 025

2024/10/24 22:19:45 来源:https://blog.csdn.net/yang_brother/article/details/142267392  浏览:    关键词:LCR 025

题目:LCR 025


解法一:反转链表

反转两个链表,然后顺序遍历,并相加进位,最后反转结果

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode dummy = new ListNode(0), resNode = dummy, temp;l1 = reverseList(l1);l2 = reverseList(l2);int num = 0;while (l1 != null || l2 != null || num == 1) {if (l1 == null && l2 != null) num += l2.val;else if (l1 != null && l2 == null) num += l1.val;else if (l1 != null && l2 != null) num += l1.val + l2.val;temp = new ListNode(num % 10);resNode.next = temp;if (l1 != null) l1 = l1.next;if (l2 != null) l2 = l2.next;resNode = resNode.next;num /= 10;}return reverseList(dummy.next);}

解法二:栈

将两链表压入栈中,然后顺序遍历两栈,相加并进位

注意:遍历栈时,每个新节点指向上一个节点,而非下一个节点

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {Deque<Integer> stack1 = new LinkedList();Deque<Integer> stack2 = new LinkedList();while (l1 != null || l2 != null) {if (l1 != null) {stack1.push(l1.val);l1 = l1.next;}if (l2 != null) {stack2.push(l2.val);l2 = l2.next;}}ListNode prev, curr = null;int num = 0;while (!stack1.isEmpty() || !stack2.isEmpty() || num != 0) {if (stack1.isEmpty() && !stack2.isEmpty()) num += stack2.pop();else if (stack2.isEmpty() && !stack1.isEmpty()) num += stack1.pop();else if (!stack1.isEmpty() && !stack2.isEmpty()) num += stack1.pop() + stack2.pop();prev = new ListNode(num % 10);prev.next = curr;curr = prev;num /= 10;}return curr;}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com