leetcode有意思的题目总结

231. 2的幂

    2^3=8 得  8是2的幂

    判断一个整数是不是2的幂,可根据二进制来分析。2的幂如2,4,8,等有一个特点:

    二进制数首位为1,其他位为0,如2为10,4为100

     2&(2-1)=0   4&(4-1)=0     即得出结论如果一个数n为2的幂,则n(n-1)=0

258 各位相加的过程为3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。

    有如下关系:num = a * 10000 + b * 1000 + c * 100 + d * 10 + e

    即:num = (a + b + c + d + e) + (a * 9999 + b * 999 + c * 99 + d * 9)

    因为 a * 9999 + b * 999 + c * 99 + d * 9 一定可以被9整除,因此num模除9的结果与 a + b + c + d + e 模除9的结果是一样的。

    对数字 a + b + c + d + e 反复执行同类操作,最后的结果就是一个 1-9 的数字加上一串数字,最左边的数字是 1-9 之间的,右侧的数字永远都是可以被9整除的。

    return 1 + (num-1) % 9;

猜你喜欢

转载自www.cnblogs.com/xueyunqing/p/10238245.html