简单算法题:leetcode-2 两数相加
算法撸一遍,从简单的开始。
做leetcode题目的时候,经常百度答案,但感觉大多不是我想要的,很多我不能理解。现在也做了一些算法题,哪些并不是很深奥,但需要一些技巧,简单的算法题更多的是经验值。这里,开启算法题篇章。给自己记忆,希望不要误人子弟。
题目
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807复制代码
解题
看完题目,简单点理解就是 1+1=2的题目。只不过是用链表存的数据
思路
1:循环链表,取出所有数据,两个链表都为空为止
2:同位数相加,大于10要取余进一
代码
public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode listNode = new ListNode(0);//用来存储ListNode listNode2 = listNode;int z = 0 ;while (l1 != null && l2 != null){int x ;int y ;x = l1 != null ? l1.val : 0; //如果为空的话 用0赋值y = l2 != null ? l2.val : 0;listNode2.next = new ListNode((x + y + z) % 10);//计算取余listNode2 = listNode2.next;z = (x + y + z) >= 10 ?1:0;if (l1 != null)l1 = l1.next ; //下一位if (l2 != null)l2 = l2.next ;}if (z > 0 ){listNode2.next = new ListNode(z);}return listNode.next ;
}复制代码
其他代码
public static class ListNode {int val;ListNode next;ListNode(int x) { val = x; }
}复制代码
public static void main(String[] age){ListNode listNode1 = new ListNode(2);ListNode listNode2 = new ListNode(4);ListNode listNode3 = new ListNode(3);listNode2.next = listNode3;listNode1.next = listNode2;ListNode listNode4 = new ListNode(5);ListNode listNode5 = new ListNode(6);ListNode listNode6 = new ListNode(4);listNode5.next = listNode6;listNode4.next = listNode5;ListNode listNode = addTwoNumbers(listNode1, listNode4);while (listNode != null){System.out.println(listNode.val);listNode = listNode.next;}
}复制代码
转载于:https://juejin.im/post/5caffb665188251af5251964
简单算法题:leetcode-2 两数相加相关推荐
- [链表遍历|模拟] leetcode 2 两数相加
[链表遍历|模拟] leetcode 2 两数相加 1.题目 题目链接 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字. 如果 ...
- 20200114:(leetcode)两数相加
两数相加 题目 主要思路 代码实现 题目 注意点:不以0开头 主要思路 逐个相加即可,注意需要逆序加,注意进位即可: 由于数字是个位数的,因此进位只有可能是0或者1: 注意定义的有参构造器. 代码实现 ...
- python【力扣LeetCode算法题库】2-两数相加
两数相加 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表 ...
- 力扣刷题-单链表两数相加
分区:链表 2.两数相加 题目描述: 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表 ...
- LeetCode 445. 两数相加 II(链表大数加法)
1. 题目 给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 进 ...
- LeetCode:2. 两数相加(中等)
2. 两数相加(中等) 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 把俩个链表对应位相加,如果大于等于10,对10取余,小于10,直接得到这一位 解题过程存在这样几个问题: 1.进行循环 ...
- LeetCode 2 两数相加
给定两个非空链表来代表两个非负数,位数按照逆序方式存储,它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 - ...
- LeetCode 2 两数相加(链表)
题目要求: 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入 ...
- 算法题十一 之 两数相乘
题目 给定两个只包含0 - 9 的字符串,输出两个字符串相乘的结果. 要求: 不可以直接把输入的字符串转化成整数 思路 因为不可以直接把输入字符串转化成正数,所以我们只能用代码实现一个位一位之间的相乘 ...
最新文章
- 贝叶斯深度学习2020 最新研究总结
- 安卓关于fragment切换后继续运行的问题!
- 走在浪潮尖端——为什么选择云计算
- ASP.NET Core 中文文档 第三章 原理(1)应用程序启动
- 麒麟信安:根植于openEuler,走操作系统自主创新之路
- To disable deprecation,,use _CRT_SECURE_NO_WARNINGS
- 采用Angular勾画SVG圆环形进度条
- sql datetime字段 取年月日_写一手好SQL,你该从哪里入手?
- SQL Server中的数据层应用程序简介
- c++编译器对类的处理
- oracle中入库判断空串,不同数据库和SpringDataJPA对字段值null,''空值的判断
- 武汉大学计算机国家网络安全学院怎么样,武汉大学国家网络安全学院怎么样?...
- 清华紫光输入法linux,清华紫光拼音输入法
- 获取验证码60秒倒计时js
- 基于单片机的led阅读灯方案
- firefox火狐浏览器开启backdrop-filter高斯模糊
- java 临时文件_java创建临时文件
- 未知USB设备(设备描述符请求失败)
- JavaScript 是怎么运行起来的?
- 腾讯会议APP——新手PRD文档