基础的链表和二进制结合的题目,可以用位运算和直接运算来写
题目如下
直接进行运算
int getDecimalValue(struct ListNode* head){
int res=0;
while(head!=NULL)
{
res=res*2;
res+=head->val;
head=head->next;
}
return res;
}
位运算
设 a=1010 1110,a = a<< 2 将a的二进制位左移2位、右补0,即得a=1011 1000。
int getDecimalValue(struct ListNode* head){
int res=0;
while(head!=NULL)
{
res=(res << 1)|head->val;
head=head->next;
}
return res;
}