LeetCode-9-Palindrome Number

题目要求:判断一个数字是否是回文数字。
思路:通过res = res * 10 + x % 10; x /= 10;我们就能取出x的右半边逆序后的数字。当x的位数是奇数时,如x = 12321, 那么很容易验证循环退出时res = 123,此时判断x ?= res/10,如果相等则x是回文数,否则不是;当x的位数是偶数时,如x = 123321,那么循环退出时res = 123,此时判断x ?= res,如果相等则x是回文数。
代码如下:

bool isPalindrome(int x) {
    if (x < 0 || (x % 10 == 0 && x != 0)) {
        return false;LinkedList
    }
    int res = 0;
    while(x > res) {
        res = res * 10 + x % 10;
        x = x / 10;
    }
    return res == x || x == res/10;
}

二叉树的深度和高度

二叉树的深度和高度是非常相似的两个量,经常会让人分不清他们的区别。它们的准确定义如下:

  • 深度:这个定义是针对每个节点来说的,一个节点的深度是从根节点到该节点经过的边的数量
  • 高度:对于一个节点来说,一个节点的高度是从这个节点到最深的叶子经过的边的数量;对一棵树来说,树的高度就是根节点的高度

继续阅读“二叉树的深度和高度”

SDWebImage 源代码剖析-网络部分

前面两篇博文中,简要对SDWebImage的缓存部分多线程部分进行了分析。建议在阅读本篇内容前先看下缓存策略那篇,以对SDWebImage的基本内容有所了解。在本篇中,我们将对它的网络策略进行分析。我们知道SDWebImage的主要功能就是从远程主机上下载图片,所以前面的几个策略都是为这一目的提供支持的,而网络策略的好坏将直接决定库的性能。不过SDWebImage以GitHub上接近20000的star数向我们证明了它不俗的实力,下面就让我们一起看看吧。 继续阅读“SDWebImage 源代码剖析-网络部分”