給你一個(gè)單鏈表的引用結(jié)點(diǎn) head裸弦。鏈表中每個(gè)結(jié)點(diǎn)的值不是 0 就是 1。已知此鏈表是一個(gè)整數(shù)數(shù)字的二進(jìn)制表示形式作喘。
請你返回該鏈表所表示數(shù)字的 十進(jìn)制值 理疙。
從頭節(jié)點(diǎn)head開始執(zhí)行循環(huán),就認(rèn)為當(dāng)前節(jié)點(diǎn)是最后一個(gè)節(jié)點(diǎn)泞坦,把它的值p->val加上窖贤,如果后面還有值,證明剛才的那個(gè)值不是最后一個(gè)是當(dāng)前的倒數(shù)第二個(gè)贰锁,所以給他剩2赃梧,加上當(dāng)前節(jié)點(diǎn)的值,這樣一直循環(huán)等到?jīng)]有節(jié)點(diǎn)了就可以了豌熄。
示例 1:
輸入:head = [1,0,1]
輸出:5
解釋:二進(jìn)制數(shù) (101) 轉(zhuǎn)化為十進(jìn)制數(shù) (5)
示例 2:
輸入:head = [0]
輸出:0
示例 3:
輸入:head = [1]
輸出:1
示例 4:
輸入:head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]
輸出:18880
示例 5:
輸入:head = [0,0]
輸出:0
int getDecimalValue(struct ListNode* head){
struct ListNode * p = head;
int sum = 0;
while(p){
sum = sum*2+p->val;
p = p->next;
}
return sum;
}