方法一:
(开始没想到比较简洁的)
/**
* @param ListNode $head
* @return Integer
*/
function getDecimalValue($head) {
if($head == null){
return 0;
}
$res = [];
// 将链表数据存入数组
while($head != null){
$res[] = $head->val;
$head = $head->next;
}
$total;
$p = 0;
//按位计算求和
for($i=count($res)-1; $i>=0; $i--) {
$total += $res[$i] * pow(2,$p);
$p++;
}
return $total;
}
方法二:
/**
* @param ListNode $head
* @return Integer
*/
function getDecimalValue($head) {
if($head == null){
return 0;
}
$total = 0;
$cur = $head;
// 从高位开始,每走一位相当于*2
while($cur != null){
$total = $total * 2 + $cur->val;
$cur = $cur->next;
}
return $total;
}