1018. Binary Prefix Divisible By 5
题目简介
/**
* @param {number[]} nums
* @return {boolean[]}
*/
题目给我们一个数字数组 nums,其元素只有 0 与 1
我们通过遍历 nums 下标 0~i 可以得到 nums.length 个二进制数组
举个例子:nums = [1,0,1]
- 当
i = 0时二进制表示为1b可得x0 = 1 - 当
i = 1时二进制表示为10b可得x1 = 2 - 当
i = 2时二进制表示为101b可得x2 = 5
题目要求我们返回一个数组 ans,ans 的每一个元素值是对应该下标得到的数字是否可以被 5 整除(true/false)
解题思路
当我们把下标加一时,有可能是 0 或者 1
0 代表把当前数字乘二
1 代表把当前数字乘二加一
我们可以通过上述规则计算出当前数字,但是我们只关心当前数字是否可以被 5 整除,所以我们可以每次操作后用当前数字对 5 取模
取模后如果为 0,则表示当前数字可以被 5 整除,则结果为 true,否则为 false
Javascript
/**
* @param {number[]} nums
* @return {boolean[]}
*/
var prefixesDivBy5 = function (nums) {
let remainder = 0
return nums.map(num => {
remainder = (remainder * 2 + num) % 5
return remainder % 5 === 0
})
};