717. 1-bit and 2-bit Characters

Leetcode link

题目简介

/**
 * @param {number[]} bits
 * @return {boolean}
 */

本题给了一个数字数组 bits,它的元素只有可能是 1 或 0,且数组的最后一个元素必为 0

如果相邻的两个元素是 [1, 1][1, 0] 他们可以被合并为 [11][10],这种情况我们称之为 2 比特字符

如果某个元素是 [0],则它可以被合并为 [0],这种情况我们称之为 1 比特字符

题目要求我们回答给定的字符串 bits 的最后一个 0 是否是 1 比特字符

解题思路

我们可以遍历数组,如果遇到 1 的话,则表示遇到 2 比特字符了,我们把遍历下标加 2

反之如果遇到 0,我们就正常把遍历下标加 1 即可

遍历下标的边界是 0~bits.length - 2

如果最后遍历下标指向了数组的最后一个元素,则表示最后一个 0 是 1 比特字符,否则就是 2 比特字符

Javascript

/**
 * @param {number[]} bits
 * @return {boolean}
 */
var isOneBitCharacter = function(bits) {
    const len = bits.length
    let i = 0
    while(i < len - 1) {
        i += bits[i] + 1
    }

    return i === len - 1
};

results matching ""

    No results matching ""