您的位置:首页 > 其它

LeetCode-717:1-bit and 2-bit Characters (1位和2位编码元素)-- easy

2017-11-07 20:30 399 查看

Question

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.

问题解析:

给定数组中仅有0和1两种元素,且出现的元素组合只能有三种编码方式:
10
11
0
,判断给定的数组最后一个元素是否属于
0
编码,而不是
10
编码。

Answer

Solution 1:

读清楚题目。

明白题目意图,就会发现,题目的意思是要判断最后一个
0
元素是属于
0
还是输入
10


遍历数组,给定指针,若当前位为
1
则指针
+2
;若当前位为
0
,则指针
+1


判断最后指针是否与
bits.length-1
相等,相等则为真,否则为假;其中length=1的情况也包括进去了。

class Solution {
public boolean isOneBitCharacter(int[] bits) {
int i = 0;
while (i < bits.length-1){
if (bits[i] == 1){
i += 2;
}else{
i++;
}
}
return i == bits.length-1;
}
}


时间复杂度:O(n),空间复杂度:O(1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LeetCode 算法 Array Easy
相关文章推荐