John 易筋 ARTS打卡Week 02

发布于: 2020 年 05 月 31 日

每周完成一个 ARTS:

Algorithm: 每周至少做一个 LeetCode 的算法题

Review: 阅读并点评至少一篇英文技术文章

Tips: 学习至少一个技术技巧

Share: 分享一篇有观点和思考的技术文章

zgpeace 立个Flag:坚持ARTS 10年,今天是2020-05-04 ~ 2030-05-04,漏掉一次微信群发红包100大洋。

1. Algorithm: 每周至少做一个 LeetCode 的算法题

876. Middle of the Linked List

Given a non-empty, singly linked list with head node head, return a middle node of linked list.

If there are two middle nodes, return the second middle node.

Example 1:

Input: [1,2,3,4,5]
Output: Node 3 from this list (Serialization: [3,4,5])
The returned node has value 3. (The judge's serialization of this node is [3,4,5]).
Note that we returned a ListNode object ans, such that:
ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, and ans.next.next.next = NULL.

Example 2:

Input: [1,2,3,4,5,6]
Output: Node 4 from this list (Serialization: [4,5,6])
Since the list has two middle nodes with values 3 and 4, we return the second one.

解决思路:fast快, slow慢两个链表同时走, fast走两步,slow走一步。当fast为null时,则slow刚好在中间位置。

比如:[1,2,3,4,5]

0步: slow 1, fast 1
1步: slow 2, fast 3
2步: slow 3, fast 5

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode middleNode(ListNode head) {
ListNode slow = head;
ListNode fast = head;
while (fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;
}
return slow;
}
}

2. Review: 阅读并点评至少一篇英文技术文章

打印iOS App的所有请求,用URLProtocol可以打印URLConnection, URLSession的请求信息。但是打印response笔者还遇到很多坑,只能通过delegate去做拦截。下面这篇文章比较简单的拦截了request的信息,亲测可用。

Printing data requests using a custom URLProtocol

https://www.avanderlee.com/swift/printing-data-requests/

3. Tips: 学习至少一个技术技巧

iOS App唤起另一个App需要用到Universal Link。需要在证书中配置Associated domain,否则Xcode运行会报如下错误。

Provisioning profile "****.***.***" doesn't support the Associated Domains capability.

解决方法一

  1. 登录开发者账号https://developer.apple.com/

  1. Under ‘Certificates, Identifiers & Profiles’ in the Developer Member Center, choose your App ID under ‘Identifiers’, ‘App IDs’ in the left hand column.

  1. Choose ‘Edit’ and then enable ‘Associated Domains.’

如果仅仅是解决Xcode运行错误问题,可以删除掉Associated Domains. 细节请参考笔者文章,提供了3种解决方案:

Xcode证书错误 Provisioning profile does not support the Associated Domains capability

https://blog.csdn.net/zgpeace/article/details/106422993

4. Share: 分享一篇有观点和思考的技术文章

周末看了Bob大叔的演讲,编程的未来。讲述了程序员的历史1945年第一台计算机开始,只有一位程序员,到目前为止全球程序员数无胜数。新语言如雨后春笋般爆发,以后的未来是增强版的敏捷开发 + 重拾极客专业精神。整场演讲解析:程序员为啥是从以前的高门槛数学家,到编程没有门槛的年轻人;为啥需要敏捷开发;为啥敏捷开发失效,重拾极客精神。细节请看笔者的文章

编程的未来 Uncle Bob Martin - The Future of Programming

https://blog.csdn.net/zgpeace/article/details/106458837

Bob大叔原名Robert C. Martin 。1970年开始从事编程工作(18岁),敏捷的鼻祖,著著名书籍有《敏捷软件开发 原则、模式与实践》、《架构整洁之道》。

youtube视频链接如下:

“Uncle” Bob Martin - “The Future of Programming”

发布于: 2020 年 05 月 31 日 阅读数: 18
用户头像

John(易筋)

关注

还未添加个人签名 2018.07.17 加入

还未添加个人简介

评论

发布
暂无评论
John 易筋 ARTS打卡Week 02