当前位置: 首页 > news >正文

LeetCode-C#-0002.两数相加

0.声明

该题目来源于LeetCode
如有侵权,立马删除。
解法不唯一,如有新解法可一同讨论。

1.题目

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

示例 1:
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807

示例 2:
输入:l1 = [0], l2 = [0]
输出:[0]

示例 3:
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]

提示:
每个链表中的节点数在范围 [1, 100] 内
0 <= Node.val <= 9
题目数据保证列表表示的数字不含前导零

2.代码

namespace LeetCode_0002两数相加
{class Program{static void Main(string[] args){var l1 = generateList(new int[] { 1, 5, 7 });var l2 = generateList(new int[] { 9, 9, 2, 9 });printList(l1);printList(l2);LeetCode_AddTwoNum latn = new LeetCode_AddTwoNum();var sum = latn.AddTwoNumbers(l1, l2);printList(sum);var sum1 = latn.AddTwoNumbers_1(l1, l2);printList(sum1);Console.ReadKey();}static ListNode generateList(int[] vals){ListNode start = null;ListNode end = null;for (int i = 0; i < vals.Length; i++){if (start == null)//开头为null时{start = new ListNode(vals[i]);end = start;//移动指针}else{end.next = new ListNode(vals[i]);end = end.next;}}return start;}static void printList(ListNode l){while (l != null){Console.Write($"{l.val}, ");l = l.next;}Console.WriteLine("");}}class LeetCode_AddTwoNum{public ListNode AddTwoNumbers(ListNode l1, ListNode l2){//定义一个节点用来存储新链表的第一个节点ListNode firstNode = new ListNode(0);//定义一个循环的节点ListNode lastnode = firstNode;//进位int val = 0;while (l1 != null || l2 != null || val != 0){int num1, num2;if (l1 == null)num1 = 0;elsenum1 = l1.val;if (l2 == null)num2 = 0;elsenum2 = l2.val;int value = num1 + num2 + val;val = value / 10;value = value % 10;lastnode.next = new ListNode(value);lastnode = lastnode.next;if (l1 == null)l1 = null;elsel1 = l1.next;if (l2 == null)l2 = null;elsel2 = l2.next;}return firstNode.next;}public ListNode AddTwoNumbers_1(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;}}class ListNode{public int val;public ListNode next;public ListNode(int val = 0, ListNode next = null){this.val = val;this.next = next;}}
}
http://www.lryc.cn/news/92891.html

相关文章:

  • 访问修饰符private,default,protected,public访问等级区别
  • 阿里云(Linux)安装Docker教程
  • Linux C编程基础:获取时间
  • Spring核心注解
  • 哈希表原理,以及unordered_set/和unordered_map的封装和迭代器的实现
  • 如何把歌曲里的伴奏音乐提取出来,分享几个方法给大家!
  • 区块链产业快速发展 和数集团开启区块链应用新时代
  • 初出茅庐的小李博客之常见字符串函数使用
  • 运筹学工程化流程和常见的运筹学算法分类以及常见软件
  • JAVA面向对象(三)
  • 前端面试题---跨域处理和异常、错误处理
  • 网络安全之反序列化漏洞分析
  • 19 贝叶斯线性回归
  • 第七十天学习记录:高等数学:微分(宋浩板书)
  • Jmeter
  • Flutter 学习 之 时间转换工具类
  • docker consul
  • 全志V3S嵌入式驱动开发(开发环境再升级)
  • ChatGPT:人工智能助手的新时代
  • 【面试】二、Java补充知识
  • LISTENER、TNSNAMES和SQLNET配置文件
  • 【Leetcode -225.用队列实现栈 -232.用栈实现队列】
  • 悟道3.0全面开源!LeCun VS Max 智源大会最新演讲
  • 2023蓝桥杯大学A组C++决赛游记+个人题解
  • wkhtmltopdf踩坑记录
  • 贪心算法part2 | ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II
  • [C++]异常笔记
  • 浅谈一级机电管道设计中的压力与介质温度
  • Docker网络模型(八)使用 macvlan 网络
  • 控制视图内容的位置