Ahri-珊

day5将分享LeetCode算法题172,189,190。

LeetCode

今天的三道题涉及到2进制数,数组。

172. Factorial Trailing Zeroes

计算一个数的阶乘末尾有多少个零。

心路历程

1.只有偶数和5相乘能够构成一个零,一个5和只能有一个零,出现5就肯定会出现偶数(5!=54321)

2.所以此题只需求n!中有多少个5.

代码:

var trailingZeroes = function(n) {
    return Math.floor(n/5) == 0 ? 0 : Math.floor(n/5) + trailingZeroes(Math.floor(n/5));
};

189. Rotate Array

右移数组!

心路历程

将数组右移k位,就循环k次,每次把最后一位取出来放到第一位。

代码:

var rotate = function(nums, k) {
    for(let i=0;i<k;i++)
        {
            nums.unshift(nums.pop());
        }
};

190. Reverse Bits

对无符号的32为比特数求逆。

代码:

var reverseBits = function(n) {
    var result = 0;
    var count = 32;
    while (count-- > 0) {
        var digit = n & 1;
        result = result * 2;
        result += digit;
        n = n >>> 1;
    }
    return result;
};

END