ARTS挑战记录

ARTS挑战记录

第一周 2022.03.21-2022.03.27

第二周 2022.03.28-2022.04.03



ARTS挑战

  • Algorithm。主要是为了编程训练和学习。每周至少做一个 leetcode 的算法题(先从Easy开始,然后再Medium,最后才Hard)。进行编程训练,如果不训练你看再多的算法书,你依然不会做算法题,看完书后,你需要训练。关于做Leetcode的的优势,你可以看一下我在coolshell上的文章 Leetcode 编程训练 - 酷 壳 - CoolShell。
  • Review:主要是为了学习英文,如果你的英文不行,你基本上无缘技术高手。所以,需要你阅读并点评至少一篇英文技术文章,我个人最喜欢去的地方是http://Medium.com(需要梯子)以及各个公司的技术blog,如Netflix的。
  • Tip:主要是为了总结和归纳你在日常工作中所遇到的知识点。学习至少一个技术技巧。你在工作中遇到的问题,踩过的坑,学习的点滴知识。
  • Share:主要是为了建立你的影响力,能够输出价值观。分享一篇有观点和思考的技术文章。`

提示:以下是本篇文章正文内容,下面案例可供参考

Algorithm

2.两数相加
给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
题解:其实思路比较简单,但是因为在提示里看到了递归,一直在想递归,写的复杂了;

 public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode result = new ListNode();
        int i = l1.val + l2.val;
        result.val = i % 10;
        result.next = getNext(l1.next, l2.next, result, i);
        return result;
    }

    ListNode getNext(ListNode l1, ListNode l2, ListNode head, int i) {
        if (l1 == null && l2 == null) {
            if (i >= 10) {
                ListNode last = new ListNode();
                last.val = i / 10;
                return last;
            }
            return null;
        } else {

            ListNode next = new ListNode();
            if (l1 != null && l2 != null) {
                next.val = (l1.val + l2.val + i / 10) % 10;
                i = l1.val + l2.val + i / 10;
                next.next = getNext(l1.next, l2.next, next, i);
            } else if (l1 != null) {
                next.val = (l1.val + i / 10) % 10;
                i = l1.val + i / 10;
                next.next = getNext(l1.next, null, next, i);
            } else {
                next.val = (l2.val + i / 10) % 10;
                i = l2.val + i / 10;
                next.next = getNext(null, l2.next, next, i);
            }
            head.next = next;
            if (next.next == null && i >= 10) {
                ListNode last = new ListNode();
                last.val = i / 10;
                next.next = last;
            }

            return next;
        }
    }

Review

本周还是来自medium.org的一篇简单文章,开发者应该知道的六种算法,作者Richard Warepam

  • 排序算法
    冒泡排序(Bubble Sort)
    归并排序(Merge Sort)
    快速排序(Quicksort)
    堆排序(Heap Sort)
  • 搜索算法
    二分查找(Binary Search)
    深度优先(Depth-first Search)
    广度优先(Breadth-first Search)
  • 动态规划
  • 递归
  • 分治法
  • 哈希(从Hash表中取元素快)

Tip

重要不紧急>紧急不重要

Share

本周分享来自美团技术团队的一篇文章,Java线程池实现原理及其在美团业务中的实践,关于线程池的内容此处不再多讲,最终结论是想要用好线程池,建议从线程池参数动态化和线程池监控两方面入手,进行线程池的调优。

总结

加油吧

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值