1018. Binary Prefix Divisible By 5

Leetcode link

题目简介

/**
 * @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
    })
};

results matching ""

    No results matching ""