算法撸一遍,从简单的开始。

做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 两数相加相关推荐

  1. [链表遍历|模拟] leetcode 2 两数相加

    [链表遍历|模拟] leetcode 2 两数相加 1.题目 题目链接 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字. 如果 ...

  2. 20200114:(leetcode)两数相加

    两数相加 题目 主要思路 代码实现 题目 注意点:不以0开头 主要思路 逐个相加即可,注意需要逆序加,注意进位即可: 由于数字是个位数的,因此进位只有可能是0或者1: 注意定义的有参构造器. 代码实现 ...

  3. python【力扣LeetCode算法题库】2-两数相加

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

  4. 力扣刷题-单链表两数相加

    分区:链表 2.两数相加 题目描述: 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表 ...

  5. LeetCode 445. 两数相加 II(链表大数加法)

    1. 题目 给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 进 ...

  6. LeetCode:2. 两数相加(中等)

    2. 两数相加(中等) 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 把俩个链表对应位相加,如果大于等于10,对10取余,小于10,直接得到这一位 解题过程存在这样几个问题: 1.进行循环 ...

  7. LeetCode 2 两数相加

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

  8. LeetCode 2 两数相加(链表)

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

  9. 算法题十一 之 两数相乘

    题目 给定两个只包含0 - 9 的字符串,输出两个字符串相乘的结果. 要求: 不可以直接把输入的字符串转化成整数 思路 因为不可以直接把输入字符串转化成正数,所以我们只能用代码实现一个位一位之间的相乘 ...

最新文章

  1. 贝叶斯深度学习2020 最新研究总结
  2. 安卓关于fragment切换后继续运行的问题!
  3. 走在浪潮尖端——为什么选择云计算
  4. ASP.NET Core 中文文档 第三章 原理(1)应用程序启动
  5. 麒麟信安:根植于openEuler,走操作系统自主创新之路
  6. To disable deprecation,,use _CRT_SECURE_NO_WARNINGS
  7. 采用Angular勾画SVG圆环形进度条
  8. sql datetime字段 取年月日_写一手好SQL,你该从哪里入手?
  9. SQL Server中的数据层应用程序简介
  10. c++编译器对类的处理
  11. oracle中入库判断空串,不同数据库和SpringDataJPA对字段值null,''空值的判断
  12. 武汉大学计算机国家网络安全学院怎么样,武汉大学国家网络安全学院怎么样?...
  13. 清华紫光输入法linux,清华紫光拼音输入法
  14. 获取验证码60秒倒计时js
  15. 基于单片机的led阅读灯方案
  16. firefox火狐浏览器开启backdrop-filter高斯模糊
  17. java 临时文件_java创建临时文件
  18. 未知USB设备(设备描述符请求失败)
  19. JavaScript 是怎么运行起来的?
  20. 腾讯会议APP——新手PRD文档

热门文章

  1. (android控件)ListView的Item中设置按钮实现
  2. silverlight 安全性错误
  3. 关于重构之Switch的处理【一】如果是有序的话,如何处理
  4. [概统]本科二年级 概率论与数理统计 第四讲 连续型随机变量
  5. UA MATH574M 统计学习V Variable Selection简介
  6. Linux 组调度学习
  7. MongoDB基本概念学习 - 集合
  8. 批处理显示语句学习(echo、 @ 、 pause)
  9. ReactOS 架构
  10. Vim编辑器的基本使用和三种模式