一天一道简单题目(2)
2018-03-18 12:56
260 查看
给出两个表示非负整数的数字链表,数字以相反的顺序存储,每个链表都存储该非负整数某一位上的数字。计算两个非负整数的和,并以链表的方式返回。简单做个比喻:342,以链表的存储形式就是,2->4->3。
时间复杂度:O(n)。空间复杂度:O(n)。
时间复杂度:O(Max(m, n))。 空间复杂度:O(Max(m, n))。
“`
时间复杂度:O(n)。空间复杂度:O(n)。
``` public static ListNode Addtosum(ListNode l1,ListNode l2){ Addsum(l1,l2); return l1; } public static void Addsum(ListNode l1, ListNode l2) { l1.val+=l2.val; if(l1.val>=10){ if(l1.next==null){ l1.next=new ListNode(0); } l1.next.val+=1; l1.val=l1.val%10; } if(l1.next==null&&l2.next==null){ return; }else if(l1.next!=null&&l2.next==null){ l2.next=new ListNode(0); }else if(l1.next==null&&l2.next!=null){ l1.next=new ListNode(0); } Addsum(l1.next,l2.next); }
时间复杂度:O(Max(m, n))。 空间复杂度:O(Max(m, n))。
public static ListNode AddNewsum(ListNode l1,ListNode l2){ ListNode t=new ListNode(0); ListNode p=l1; ListNode q=l2; ListNode curr=t; 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; curr.next=new ListNode(sum%10); curr=curr.next; if(p!=null){ p=p.next; } if(q!=null){ q=q.next; } } if(carry>0){ curr.next=new ListNode(carry); } return t.next; }
“`
相关文章推荐
- 一天一道简单题目(1)
- 一道简单的ACM题目学到的东西
- 一道简单的acm题目
- 神的回复,让一道jvm的题目瞬间简单,在中国,评论永远是最精彩的
- 一道做了一天的题目!
- 一道更简单的题目和一个重大发现
- 一道简单的C++题目
- 今天做了一道的题目,简单是因为程序写起来简单,但是感觉题目不错;
- C++ 一道简单的题目引发的思考
- 一道简单的面试题目:输入1234输出1_2_3_4
- 一道简单的寻找中位数的题目
- 一道简单的题目引发的思考
- 一道简单题目的复杂算法
- 一道简单的ACM题目讨论
- 一道简单测试题目引发的感想!
- 一道简单的题目引发的思考
- 一道简单的但是经典的动态规划题目
- poj1655-又是一道简单而又纠结的题目
- 一道关于jvm加载的简单题目
- 并查集的一道题目;发现可以用并查集就简单了;