leetcode 717. 1-bit and 2-bit Characters ( Python )

420 阅读20分钟

描述

We have two special characters. The first character can be represented by one bit 0. The second character can be represented by two bits (10 or 11).

Now given a string represented by several bits. Return whether the last character must be a one-bit character or not. The given string will always end with a zero.

Example 1:

Input: 
bits = [1, 0, 0]
Output: True
Explanation: 
The only way to decode it is two-bit character and one-bit 	character. So the last character is one-bit character.

Example 2:

Input: 
bits = [1, 1, 1, 0]
Output: False
Explanation: 
The only way to decode it is two-bit character and two-bit character. So the last character is NOT one-bit character.

Note:

1 <= len(bits) <= 1000.
bits[i] is always 0 or 1.

解析

根据题意一共有三种数字组合:10、11、0,判断最后一个数字是否是一个单独的数组,用到了贪心算法,设置一个变量 i ,遍历数组碰到 1 ,不管后面一位是什么,都是一个合法的两位数,所以直接 i+2 ,如果碰到 0,则 i+1 ,遍历范围是 i<len(bits)-1,最后判断是否 i==len(bits)-1 。时间复杂度为 O(N),空间复杂度为 O(1)。

解答

class Solution(object):
def isOneBitCharacter(self, bits):
    """
    :type bits: List[int]
    :rtype: bool
    """
    i = 0
    while i<len(bits)-1:
        if bits[i] == 0:
            i+=1
        else:
            i+=2
    return i == len(bits)-1 
                   

运行结果

Runtime: 48 ms, faster than 17.47% of Python online submissions for 1-bit and 2-bit Characters.
Memory Usage: 11.9 MB, less than 15.00% of Python online submissions for 1-bit and 2-bit Characters.

每日格言:过去属于死神,未来属于你自己。

感谢支持 支付宝

支付宝

微信

微信