首页 > 其他分享 >LeetCode两数相加(nullprt,构造函数,结构体链表中取数/链表)

LeetCode两数相加(nullprt,构造函数,结构体链表中取数/链表)

时间:2023-01-11 23:12:50浏览次数:59  
标签:ListNode int next 链表 tail l2 l1 两数 构造函数

原题解

nullprt

构造函数

构造函数的写法不同

虽然我没理解但是结构体这样写ListNode* ans = nullptr;直接cout答案就是0,所以由构造函数可知ListNode(int x) : val(x), next(nullptr) {}最后找到的l1一定是0,中间是存储的地址。

创造一个数组需要head和tail两个指针,head拿来遍历数组,tail拿来添加数。

题目

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

约束

解法

方法一

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode *head = nullptr, *tail = nullptr;
        int carry = 0;
        while (l1 || l2) {
            int n1 = l1 ? l1->val: 0;
            int n2 = l2 ? l2->val: 0;
            int sum = n1 + n2 + carry;
            if (!head) {
                head = tail = new ListNode(sum % 10);
            } else {
                tail->next = new ListNode(sum % 10);
                tail = tail->next;
            }
            carry = sum / 10;
            if (l1) {
                l1 = l1->next;
            }
            if (l2) {
                l2 = l2->next;
            }
        }
        if (carry > 0) {
            tail->next = new ListNode(carry);
        }
        return head;
    }
};

标签:ListNode,int,next,链表,tail,l2,l1,两数,构造函数
From: https://www.cnblogs.com/chuixulvcao/p/17045115.html

相关文章

  • C++构造函数【cherno课程学习】
    C++构造函数无参构造函数首先创造一个Entity类,在类里面有两个变量x,y以及一个方法#include<iostream>classEntity{public:floatX,Y;voidPrint(){......
  • 双链表
    图示:  代码:  1importlombok.Data;23publicclassDoubleLinkedListTest{4publicstaticvoidmain(String[]args){5Doubl......
  • leetcode_数据结构_入门_1. 两数之和
    1.两数之和问题给定一个整数数组nums 和一个整数目标值target,请在该数组中找出和为目标值target的那 两个整数,并返回它们的数组下标。分析可以假设每种输入......
  • LeetCode两数之和(vector,unordered_map/哈希表)
    原题解vectorunordered_map题目给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可......
  • leetcode206-反转链表
    思路方法一,递归。将head节点和后续所有节点看做两个部分,对后续部分执行递归函数,然后将两部分组合起来。关键在于head节点的next指向的是除head以外后续所有节点反转后的......
  • leetcode简单(数组,字符串,链表):[168, 171, 190, 205, 228, 448, 461, 876, 836, 844]
    目录168.Excel表列名称171.Excel表列序号190.颠倒二进制位205.同构字符串228.汇总区间448.找到所有数组中消失的数字461.汉明距离876.链表的中间结点836.矩形重......
  • 单链表
    图示:代码:1importlombok.Data;2importjava.util.Stack;34publicclassSingleLinkedListTest{5publicstaticvoidmain(String[]args){......
  • 链表反转
    #include<iostream>structListNode{intdata=0;ListNode*next=NULL;};//反转链表//题意:反转一个单链表。//示例:输入:1->2->3->4->5->NULL输出:......
  • Redis-数据结构与对象-链表
    链表Redis使用的C没有内置链表结构,Redis自己实现了链表双端:链表节点带有prev和next指针,获取某个节点的前置节点和后置节点的复杂度都是O(1)。无环:表头节点的prev指针和表......
  • 选择&冒泡&插入排序以及交换两数的三种方式
    选择排序//0~n位先排第0位的,将1~n的分别与0上的比较,如果小于它,交换//再排第1位,将2~n的分别与0上的比较,如果小于它,交换//以此类推publicstaticvoidselectSo......