【LeetCode. 链表求和 (Java)】Middle-Easy题
注意进位和最后一步容易忽略,最后需要判断有没有进位,进位就加一位值为1的尾节点。
/**
* Definition for singly-linked list.
* public class ListNode {
*int val;
*ListNode next;
*ListNode(int x) { val = x;
}
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int candy = 0;
ListNode head = new ListNode(0);
ListNode cur = head;
while (l1 != null || l2 != null){
int val1 = (l1 == null) ? 0 : l1.val;
int val2 = (l2 == null) ? 0 : l2.val;
int sum = val1 + val2 + candy;
if (sum >= 10)
candy = 1;
else
candy = 0;
cur.next = new ListNode(sum%10);
cur = cur.next;
if (l1 !=null)
l1 = l1.next;
if (l2 !=null)
l2 = l2.next;
}
if (candy == 1){
ListNode tmp = new ListNode(1);
cur.next = tmp;
}
return head.next;
}
}
推荐阅读
- 人工智能|干货!人体姿态估计与运动预测
- 分析COMP122 The Caesar Cipher
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)
- C语言学习(bit)|16.C语言进阶——深度剖析数据在内存中的存储
- Python机器学习基础与进阶|Python机器学习--集成学习算法--XGBoost算法
- 数据结构与算法|【算法】力扣第 266场周赛
- 数据结构和算法|LeetCode 的正确使用方式
- leetcode|今天开始记录自己的力扣之路
- 人工智能|【机器学习】深度盘点(详细介绍 Python 中的 7 种交叉验证方法!)
- 网络|简单聊聊压缩网络