ARTS - 2020.09.07 ~ 2020.09.13

ARTS打卡 - 14

1. Algorithm

21. Merge Two Sorted Lists

题目是合并两个有序链表:

整体来看题目是比较简单的,合并的是有序链表,所以按照两个链表逐个元素对比,然后接在链表后面就可以了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1 == null && l2 == null){
return null;
}
ListNode head = new ListNode(0);
ListNode tempHead = head;
while (l1 != null && l2 != null){
if(l1.val <= l2.val){
tempHead.next = l1;
l1 = l1.next;
}else{
tempHead.next = l2;
l2 = l2.next;
}
tempHead = tempHead.next;
}
if(l1 != null){
tempHead.next = l1;
}
if(l2 != null) {
tempHead.next = l2;
}
return head.next;
}

2. Review

3. Tip

  • 单元测试如何测需要跑出异常的方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private fun assertThrows(v: () -> Unit, exceptException: Class<out Exception>){

    try{
    v()
    }catch (e: Exception){
    if(e.javaClass != exceptException){
    fail()
    }
    return
    }
    fail()
    }

4. Share

  • [Android热修复技术选择和原理分析]https://juejin.im/post/6870510331228717063?utm_source=gold_browser_extension)

    文章非常详细的讲了目前的一些热修复方案,主要是因为在看如何将X5内核动态下发到App中去,因为X5内核是一个so库的集合,所以如果要做到动态下发,就需要能够动态加载so, 而so的加载路径实际上是在ClassLoader注册的时候就写入Linker的, 所以就需要通过hook PathList, 将自定义的路径放在PathList最前面. 这篇文章讲了热修复框架并且原理也讲得很清楚, 学习了..