LeetCode——Add Two Numbers
时间:2022-05-04
本文章向大家介绍LeetCode——Add Two Numbers,主要内容包括题目:、解题过程:、2、思路、程序代码、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
题目:
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8
解题过程:
1、分析
本道题就是考查的是链表的操作,此处有两个注意点:
- 链表的头结点
- 进位(程序中的add变量)
2、思路
对链表1和链表2中的每个元素相加,取模(%)放入result链表中,除(/)放入add变量中,最终需要考虑是否add中还有值,这是进位。
程序代码
public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode l1_r = l1;
ListNode l2_r = l2;
ListNode result = null;// 作为返回值
// 处理第一个结点
int add = 0;// 进位
int s = l1_r.val + l2_r.val + add;
result = new ListNode(s % 10);
add = s / 10;
l1_r = l1_r.next;
l2_r = l2_r.next;
//上面的result作为头结点的指针
ListNode l3_r = result;//l3_r作为链表的指针遍历
while (l1_r != null || l2_r != null) {
// 同时都不为null
ListNode l3 = null;
int sum = 0;
if (l1_r != null && l2_r != null) {
sum = l1_r.val + l2_r.val + add;
l3 = new ListNode(sum % 10);
add = sum / 10;
// 后移
l1_r = l1_r.next;
l2_r = l2_r.next;
} else if (l1_r != null && l2_r == null) {
sum = l1_r.val + add;
l3 = new ListNode(sum % 10);
add = sum / 10;
// 后移
l1_r = l1_r.next;
} else {
sum = l2_r.val + add;
l3 = new ListNode(sum % 10);
add = sum / 10;
// 后移
l2_r = l2_r.next;
}
l3_r.next = l3;
l3_r = l3_r.next;
}
//判断最后的add
/**
* 最后会有一种情况就是链表的计算都结束了,但是add中还有进位,此时要注意的是计算进位
*/
if (add != 0){
ListNode last = new ListNode(add);
l3_r.next = last;
}
return result;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 源码解析:Git的第一个提交是什么样的?
- 终于搞懂,为什么 Java 的 main 方法必须是 public static void?
- Spring Boot 多版本更新,紧急修复 RFD 安全漏洞
- 【查找】折半查找/二分查找
- Kubernetes 1.19.0——密码管理
- centos 安装软件的方法
- 【深入理解java集合系列】ArrayList实现原理
- 【深入理解java集合系列】HashMap实现原理
- 【深入理解java集合系列】HashSet实现原理
- 【深入理解java集合系列】LinkedHashSet实现原理
- 突击并发编程JUC系列-原子引用AtomicReference
- JVM类加载过程科普
- 程序员自我修养之 Git 提交信息和分支创建规范
- Django使用redis作为缓存系统
- 一天一大 leet(两个数组的交集 II)难度:简单-Day20200713