给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

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

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)

输出:7 -> 0 -> 8

原因:342 + 465 = 807

#include <iostream>

struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}//构造函数
}; ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode *ans = new ListNode();//避免这是个空指针
ListNode *temp=ans;//temp来帮ans做后面的拼接工作
int sum=;
while (l1||l2)
{
if(l1){
sum+=l1->val;
l1=l1->next;
}
if(l2){
sum+=l2->val;
l2=l2->next;
}
temp->next=new ListNode(sum%);
sum/=;
temp=temp->next;
}
if(sum)//如果还有值说明最高位还有数所以要加1
temp->next=new ListNode();
return ans->next;
} void InitList(ListNode *&head,int n)
{
std::cout << "开始赋值"<< std::endl;
ListNode *p,*s; head=(ListNode*)malloc(sizeof(ListNode)); head->next= nullptr; p=head; for(int i=;i<=n;i++) { s=(ListNode*)malloc(sizeof(ListNode)); scanf("%d",&(s->val)); s->next=nullptr; p->next=s; p=p->next; } } int main() {
ListNode *l1,*l2;
InitList(l1,);
InitList(l2,);
// while (l1 != nullptr)
// {
// std::cout << l1->val << std::endl;
// l1 = l1->next;
// }
// cout << endl; // while (l2 != nullptr)
// {
// std::cout << l2->val << std::endl;
// l2 = l2->next;
// }
// cout << endl;
l1 = l1->next;
l2 = l2->next;
ListNode *ans=addTwoNumbers( l1, l2);
while(ans!= nullptr)
{
std::cout << ans->val << std::endl;
ans=ans->next;
} return ;
}

链表还是要好好练练啊

#leetcode刷题之路2-两数相加的更多相关文章

  1. leetcode 刷题(2)--- 两数相加

    给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 -& ...

  2. LeetCode刷题 1. Two Sum 两数之和 详解 C++语言实现 java语言实现

    1. Two Sum 两数之和 Given an array of integers, return indices of the two numbers such that they add up ...

  3. leetcode 刷题(1)--- 两数之和

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], target ...

  4. #leetcode刷题之路24-两两交换链表中的节点

    给定一个链表,两两交换其中相邻的节点,并返回交换后的链表.你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例:给定 1->2->3->4, 你应该返回 2-> ...

  5. #leetcode刷题之路9- 回文数

    判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1:输入: 121输出: true 示例 2:输入: -121输出: false解释: 从左向右读, 为 ...

  6. leecode刷题(8)-- 两数之和

    leecode刷题(8)-- 两数之和 两数之和 描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输 ...

  7. leetcode腾讯精选练习之两数相加

    两数相加 题目: 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字.如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们 ...

  8. #leetcode刷题之路29- 两数相除

    给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符.返回被除数 dividend 除以除数 divisor 得到的商. 示例 1:输入: ...

  9. #leetcode刷题之路1-两数之和

    给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符.返回被除数 dividend 除以除数 divisor 得到的商. 示例 1:输入: ...

随机推荐

  1. IntelliJ IDEA 12 设置优化

    1.IntelliJ IDEA简介 IntelliJ IDEA是Eclipse之外又一强大的IDE,Google在今年发布了新的Android开发IDE---Android Studio就是基于Int ...

  2. javaSE练习1——变量和运算符

    一.已知a,b均是整型变量,写出将a,b两个变量中的值互换的程序.(知识点:变量和运算符综合应用): package com.test; public class t01 { public stati ...

  3. 深入理解读写锁—ReadWriteLock源码分析

    转载:https://blog.csdn.net/qq_19431333/article/details/70568478 ReadWriteLock管理一组锁,一个是只读的锁,一个是写锁.读锁可以在 ...

  4. SSO单点登录三种情况的实现方式详解(转)

    https://blog.csdn.net/ainuser/article/details/65631713

  5. 观察者模式在One Order回调函数中的应用

    例如需求是搞清楚function module CRM_PRODUCT_I_A_CHANGE_ORGM_EC在什么样的场景下会被调用.当然最费时间的做法是设一个断点,然后跑对应的场景,观察断点何时被触 ...

  6. 如何查找Fiori UI上某个字段对应的后台存储表的名称

    今天微信群里有朋友问到这个问题. 如果是SAPGUI里的事务码,比如MM01,对于开发者来说这个任务非常容易完成. 比如我想知道下图"Sales Unit"这个字段的值到底保存在哪 ...

  7. 『看球笔记』20131230切尔西vs利物浦,赛后复盘聊聊球

    2013-12-30 第十九轮英超联赛 切尔西vs利物浦         看着这张板凳合照… 有木有一种心里哇凉哇凉的感觉.   赛后whoscored的平均位置图 左边车子,右边我军     阿格回 ...

  8. PS中会使用到的快捷键有那些?

    P.S:我刚刚在百度上,搜了一些关于PS的快捷键的使用. 我把它总结了一下.对我今后的P图有所帮助. PS的所有快捷键 1. 显示/隐藏选择区域 [Ctrl]+[H] 2. 取消当前命令:Esc: 工 ...

  9. 显示Windows版本号

    实现效果: 知识运用: PaintDesktopVersion键 实现代码: private void button1_Click(object sender, EventArgs e) { Regi ...

  10. Linux云主机 监控方案浅析

    1.为何需要监控 监控是运维工程师的眼睛,它可帮助运维工程师第一时间发现系统的问题. 对于服务器的整个生命周期,都要和监控打交道: 当有服务器上架,都需要加入比如CPU负载.内存.网络.磁盘等基础监控 ...