[LeetCode]习题2
来源:互联网 发布:java get请求什么意思 编辑:程序博客网 时间:2024/05/29 07:03
[LeetCode]习题
首先贴上本题的链接https://leetcode.com/problems/add-two-numbers/description/
该题要求我们对给出的两个链表进行加法和进位。这道题的难点在于链表的长度位置,但第一个为非空,且要求进位是难点。
我们先化繁为简,先处理最简单的链表相应位置相加,即当node!=null时将其中的值相加并令node.next=next,于是普通的相加就完成了,接下来就是处理进位的问题,我们令初始进位carry=0,然后每次相加时用sum=x+y+carry,并且记得获取下一个进位carry=sum/10,进位也完成了。再接下来就是进行长短不一的链表,当两个链表有一个不为空时继续计算。当链表相应位置为空时,我们设为0,于是我们用三模运算进行判断最为方便,即int x = (p != null) ? p.val : 0; 在while语句的最后再判断next是否为空,即可完成。最后要注意链表的最后是否有进位,有的话我们的加法链表结果要多一位,即最后一位为1.
下面贴代码。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode result = new ListNode(0); ListNode p = l1,q = l2,node = result; int carry = 0; while(p!=null || q !=null){ int x = (p != null) ? p.val : 0; int y = (q != null) ? q.val : 0; int sum = x+y+carry; carry = sum/10; node.next = new ListNode(sum%10); node = node.next; if(p!=null) p=p.next; if(q!=null) q=q.next; } if(carry>0) node.next = new ListNode(carry); return result.next; }}
阅读全文
0 0
- [LeetCode]习题2
- Leetcode习题: SingleNumber II
- Leetcode习题: SingleNumber II
- Leetcode习题: Two Sum
- Leetcode习题:3Sum
- Leetcode习题:Distinct Subsequences
- [LeetCode]习题1
- [LeetCode]习题3
- [LeetCode]习题4
- [LeetCode]习题5
- Leetcode习题(1)
- LeetCode习题记录(2)Add Two Numbers
- 第2章 线性表综合习题(leetcode)
- Leetcode习题:Divide Two Integers
- Leetcode习题-Reverse Integer
- Leetcode习题:Insertion Sort List
- Leetcode习题:Pow(x, n)
- leetcode习题代码(经常更新)
- Vijos1164(CRT)
- 表单2
- 余弦计算相似度度量【转】
- C- 一个多线程的例子
- Django(一)--Web框架理解
- [LeetCode]习题2
- 简单了解JSP
- CentOS7安装图形界面
- phpstorm激活与汉化
- Math 对象方法
- 1.原生jdbc实例
- 第二周学习收获
- Ubuntu下查看是pple64位还是x86_64 fcitx的指令安装
- Servlet在java EE中的结构体系