【每日一题】【栈】2022年2月2日-NC40 两个链表生成相加链表
描述
假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。
给定两个这种链表,请生成代表两个整数相加值的结果链表。

答案:栈
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head1 ListNode类 * @param head2 ListNode类 * @return ListNode类 */ public ListNode addInList (ListNode head1, ListNode head2) { ListNode head = new ListNode(-1); Stack<Integer> stack1 = new Stack<>(); Stack<Integer> stack2 = new Stack<>(); while(head1 != null) { stack1.push(head1.val); head1 = head1.next; } while(head2 != null) { stack2.push(head2.val); head2 = head2.next; } int carry = 0; while(!stack1.isEmpty() && !stack2.isEmpty()) { int val = stack1.pop() + stack2.pop() + carry; int num = val % 10; carry = val / 10; ListNode node = new ListNode(num); node.next = head.next; head.next = node; } while(!stack1.isEmpty()) { int val = stack1.pop() + carry; int num = val % 10; carry = val / 10; ListNode node = new ListNode(num); node.next = head.next; head.next = node; } while(!stack2.isEmpty()) { int val = stack2.pop() + carry; int num = val % 10; carry = val / 10; ListNode node = new ListNode(num); node.next = head.next; head.next = node; } if(carry != 0) { ListNode node = new ListNode(carry); node.next = head.next; head.next = node; } return head.next; } }
本文来自博客园,作者:哥们要飞,转载请注明原文链接:https://www.cnblogs.com/liujinhui/p/15860115.html
分类:
算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2021-02-02 Linux常用软件的安装及Nginx的使用