首页 > 其他分享 >【LeeCode】2. 两数相加

【LeeCode】2. 两数相加

时间:2022-11-30 21:05:38浏览次数:67  
标签:ListNode val 相加 next LeeCode l2 l1 new


【题目描述】

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

​https://leetcode.cn/problems/add-two-numbers/?favorite=2cktkvj​


【示例】

【LeeCode】2. 两数相加_逆序

【代码】

​学习参考​

【LeeCode】2. 两数相加_ide_02

package com.company;

class ListNode {
int val;
ListNode next;
ListNode() {};
ListNode(int val) { this.val = val; };
ListNode(int val, ListNode next) {this.val = val; this.next = next;};

@Override
public String toString() {
return "ListNode{" +
"val=" + val +
", next=" + next +
'}';
}
}

public class Test {
public static void main(String[] args) {
ListNode l1 = new ListNode(2);
ListNode l2 = new ListNode(4);
ListNode l3 = new ListNode(3);
ListNode l4 = new ListNode(5);
ListNode l5 = new ListNode(6);
ListNode l6 = new ListNode(4);
l1.next = l2;
l2.next = l3;

l4.next = l5;
l5.next = l6;

ListNode listNode = addTwoNumbers(l1, l4);
System.out.println(listNode.toString());
}

public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode head = null, tail = null;
int carry = 0;
while (l1 != null || l2 != null){
int n1 = l1 != null ? l1.val : 0;
int n2 = l2 != null ? l2.val : 0;

int sum = n1 + n2 + carry;
if (head == null){
head = tail = new ListNode(sum % 10);
}else {
tail.next = new ListNode(sum % 10);
tail = tail.next;
}
carry = sum / 10;

if (l1 != null){
l1 = l1.next;
}

if (l2 != null){
l2 = l2.next;
}
}

if (carry > 0){
tail.next = new ListNode(carry);
}
return head;
}
}

标签:ListNode,val,相加,next,LeeCode,l2,l1,new
From: https://blog.51cto.com/u_13682316/5900517

相关文章

  • python-解力扣提【两数相加】
    1.题目  2.无任何参考下自己的解题代码 解题思路:i和j在列表索引中循环,不相等且两数相加等于target则返回[i,j] 3.参考大神代码解题思路:1).enumerate多用于在f......
  • 字符串相加
    字符串相加一、题目描述给定两个字符串形式的非负数num1henum2,计算它们的和并以字符串的形式返回。不能使用任何的内建函数。示例1:输入:num1="11",num2="123"输......
  • 【LeeCode】39. 组合总和
    【题目描述】给你一个 无重复元素 的整数数组 ​​candidates​​​ 和一个目标整数 ​​target​​​ ,找出 ​​candidates​​​ 中可以使数字和为目标数 ​​ta......
  • LeeCode 92双周赛复盘
    T1:分割圆的最少切割次数思维题:n为偶数时,可以对半切割,切割\(\frac{n}{2}\)次即可n为奇数时,不满足对称性,需要切割n次n为1时,不需要切割publicintnum......
  • 【C语言】实现两个整数相加
    用C语言实现两个整数相加1.首先出于目的我们需要输入两个整数和输出两个整数相加的值,需要用到printf()函数所以需要引头文件stdio.h#include<stdio.h>2.声明两个整形......
  • 力扣454 四数相加
    题目:给四个整数数组nums1、nums2、nums3和nums4,数组长度都是n,请你计算有多少个元组(i,j,k,l)能满足:0<=i,j,k,l<nnums1[i]+nums2[j]+nums3[k]+......
  • 【LeeCode】136. 只出现一次的数字
    【题目描述】给你一个 非空 整数数组 ​​nums​​ ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度......
  • 【LeeCode】169. 多数元素
    【题目描述】​​https://leetcode.cn/problems/majority-element/description/?favorite=2cktkvj​​给定一个大小为 ​​n​​ 的数组 ​​nums​​ ,返回其中的多数元......
  • 【LeeCode】229. 多数元素 II
    【题目描述】​​https://leetcode.cn/problems/majority-element-ii/description/​​给定一个大小为 n 的整数数组,找出其中所有出现超过 ​​​⌊n/3⌋​​​ 次的......
  • 【LeeCode】46. 全排列
    【题目描述】​​https://leetcode.cn/problems/permutations/?favorite=2cktkvj​​给定一个不含重复数字的数组 ​​nums​​ ,返回其 所有可能的全排列 。你可以 按......