左耳朵耗子专栏《左耳听风》 用户自发每周完成一个ARTS:
1.Algorithm:每周至少做一个 leetcode 的算法题
2.Review:阅读并点评至少一篇英文技术文章
3.Tip:学习至少一个技术技巧
4.Share:分享一篇有观点和思考的技术文章
完成内容如下:
1.Algorithm:每周至少做一个 leetcode 的算法题
我就是传说中的蠢新吧,最近脑子不够用啊
题目描述:
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
我可怜的代码,写到后来实在写不下去了:
/**
* 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) {
//反转链表
//链表需要变成数字
//把两个数字加和
//和变成链表再输出
}
public class ListNode{
ListNode head = null;
public class Node{
ListNode next = null;
int data;
}
public Node(int data){
this.data = data;
}
}
//增加节点
public void addNode(int d){
ListNode newNode = new ListNode(d);
if (head==null){
head = newNode;
return;
}
ListNode tmp = head;
while(tmp.next!=null){
tmp = tmp.next;
}
tmp.next = newNode;
}
//链表反转
public void ReverseIteratively(){
}
//给链表添加数字
public static void main(String[] args){
ListNode l1 = new ListNode();
l1.addNode(2);
l1.addNode(4);
l1.addNode(3);
ListNode l2 = new ListNode();
l2.addNode(5);
l2.addNode(6);
l2.addNode(4);
}
}
把答案抄过来:
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummyHead = new ListNode(0);
ListNode p = l1, q = l2, curr = dummyHead;
int carry = 0;
while (p != null || q != null) {
int x = (p != null) ? p.val : 0;
int y = (q != null) ? q.val : 0;
int sum = carry + x + y;
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 dummyHead.next;
}
答案的行数真的不多,似乎数据结构算法之类的,不是一开始就可以上手的东西,需要慢慢自己成体系的学习。
2.Review:阅读并点评至少一篇英文技术文章
https://tomcat.apache.org/tomcat-9.0-doc/index.html
tomcat学习,很菜啊TaT
3.Tip:学习至少一个技术技巧
https://juejin.im/post/5ca95ed46fb9a05e3d0a8533