这周加了一周班,有两天都加到晚上两点多才回家,累成狗了🥶,周末强制不去加班补觉,现在还没缓过劲来呢。本周打卡内容有点少,一道回文链表相关的题目、看了一篇关于 Android Studio 的技巧类文章。

Algorithm

题目描述

判断一个链表是否时回文链表

Example

示例 1:

> 输入: 1->2
> 输出: false
>

示例 2:

> 输入: 1->2->2->1
> 输出: true
>

用快慢方法找到中点,在这个过程中把前半段链表压进栈,之后从慢节点开始和栈中的元素依次进行对比。

public static boolean isPalindrome(ListNode head) {
if (head == null || head.next == null) {
return true;
}

ListNode slow = head;
ListNode fast = head;
Stack<Integer> pre = new Stack<>();
while (fast != null && fast.next != null) {
pre.push(slow.val);
slow = slow.next;
fast = fast.next.next;
}
if (fast != null) { //奇数
slow = slow.next;
}

while (slow != null) {
if (slow.val != pre.pop()) {
return false;
}
slow = slow.next;
}
return true;
}

Review

本周阅读学习Android studio 技巧方面的一份 wiki 文档:Android-Studio-Tips-by-Philippe-Breault

Tips

  1. JobIntentService 调度是个队列,如果前面的任务执行的过程中因为耗时任务没有执行完毕,则后面的任务无法执行,所以要避免在 JobIntentService 中做耗时任务,尤其是与界面相关的任务。除此之外如果前面的任务执行的过程中应用或者出现异常,则后面的任务会整体延时30分钟;
  2. Messaging 中短信发送是个串行队列,同一时间只能发送一条短信,如果前面发送失败触发了重发机制,则后面的短信都会同步进行延时发送;

Share

JobIntentService详解及使用