2019-03-18

作者: 张若彬 | 来源:发表于2019-03-18 15:08 被阅读0次

    goal 1

    A

    add two numbers

    /**
     * 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 ret = new ListNode(0);
            ListNode res = ret;
            ListNode p1 = l1;
            ListNode p2 = l2;
            int flag = 0;
            while(p1 != null && p2 != null){
                res.val = p1.val + p2.val;
                if(flag == 1){
                    res.val = res.val + 1;
                    flag = 0;
                }
                if(res.val >= 10){
                    res.val = res.val - 10;
                    flag = 1;
                }
                if(p1.next != null || p2.next != null || flag == 1 ){
                    res.next = new ListNode(0);
                    res = res.next;
                }
    
                p1 = p1.next;
                p2 = p2.next;
            }
            if(flag == 1){
                res.val = 1;
                flag = 0;
            }
            while(p1 != null){
                res.val = p1.val + res.val;
                if(res.val >= 10){
                    res.val = res.val -10;
                    flag = 1;
                }
                if(p1.next != null || flag == 1){
                    res.next = new ListNode(0);
                    
                    res = res.next;
                    if(flag == 1){
                        res.val = 1;
                        flag = 0;
                    }
                }
                p1 = p1.next;
            }
            while(p2 != null){
                res.val = p2.val + res.val;
                if(res.val >= 10){
                    res.val = res.val -10;
                    flag = 1;
                }
                if(p2.next != null || flag == 1){
                    res.next = new ListNode(0);
                    
                    res = res.next;
                    if(flag == 1){
                        res.val = 1;
                        flag = 0;
                    }
                }
                p2 = p2.next;
            }
            return ret;
        }
    
    }
    

    这个题目比较简单,但是做的时候还是有些情况没有考虑到,有如下几点:

    1. 在第一次同步遍历完两条链表的时候,之后没有考虑最后一次如果进位的情况
    2. 没有考虑单条遍历最后一步的进位情况

    得到教训,以后做题的时候还是先把题目仔细想一遍再动手,最好画出来。

    R go语言介绍与hello world

    go tutorial这一系列介绍了go

    什么是go

    go是google推出一种静态强类型的编译型语言。

    为何选择go?:

    • 天生支持并发, 编写并发很简单, go通过Goroutines和channels来完成并发
    • go是编译型语言,源码会被编译成机器码运行,效率比解释性语言高很多。
    • go文档简单
    • go编译器支持静态链接,所有依赖库都会被链接到为一个二进制可执行文件,部署方便,移植性也还不错。

    安装

    安装地址

    按照步骤一步一步安装的

    以上就是这篇文章的总结~

    相关文章

      网友评论

        本文标题:2019-03-18

        本文链接:https://www.haomeiwen.com/subject/lqavmqtx.html