717. 1 比特与 2 比特字符
有两种特殊字符:
第一种字符可以用一比特 0 表示
第二种字符可以用两比特(10 或 11)表示
给你一个以 0 结尾的二进制数组 bits ,如果最后一个字符必须是一个一比特字符,则返回 true 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/1-bit-and-2-bit-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
动态规划
class Solution {
public boolean isOneBitCharacter(int[] bits) {
if (bits == null || bits.length == 0) {
return false;
}
if (bits[bits.length - 1] != 0) {
return false;
}
boolean preOne = true, one = bits[0] == 0;
boolean preTwo = true, two = false;
// 1 2 3 [4]
// 1 2 [3 4]
for (int i = 1; i < bits.length; ++i) {
boolean t1 = one;
boolean t2 = two;
one = bits[i] == 0 && (one || two);
two = bits[i - 1] == 1 && (preOne || preTwo);
preOne = t1;
preTwo = t2;
}
return one && (preOne || preTwo) && !two;
}
}
遍历
class Solution {
public boolean isOneBitCharacter(int[] bits) {
if (bits == null || bits.length == 0) {
return false;
}
int i = 0;
while (i < bits.length - 1) {
i += bits[i] + 1;
}
return i == bits.length - 1;
}
}
心之所向,素履以往 生如逆旅,一苇以航

浙公网安备 33010602011771号