D126 717. 1-bit and 2-bit Characters
题目链接
717. 1-bit and 2-bit Characters
题目剖析
这道题目的形容很难懂,我看了 Discussion 区别人解释才看懂了。
当初采纳 2 位的霍夫曼编码,即:只有 0、10 和 11 三种。
给定一个数组,每一个值为 1 位。当初固定最初一位为 0,判断这最初一位是 1 位的还是 2 位的。即:是 10 的 0,还是 0 的 0。
解题思路
思考应用栈来实现,遇到 1 则入栈,0 则把“最初一位为 1 位编码”标记置 1。如果栈里曾经有值了,阐明以后是 2 位编码。把标记置 0。
最终代码
<?php
class Solution {
/**
* @param Integer[] $bits
* @return Boolean
*/
function isOneBitCharacter($bits) {$stack = [];
$isOneBit = false;
foreach($bits as $bit){if(isset($stack[0])){array_pop($stack);
$isOneBit = false;
}
else{if($bit == 1){$stack[] = $bit;
}
else{$isOneBit = true;}
}
}
return $isOneBit;
}
}
若感觉本文章对你有用,欢送用爱发电赞助。