classSolution{public:intgetDecimalValue(ListNode* head){
ListNode* cur = head;int ans =0;while(cur !=nullptr){
ans = ans *2+ cur->val;
cur = cur->next;}return ans;}};
图示
详解
获得头结点: (此处可以不引用 cur,直接调用 head ,引用 cur 可以使代码逻辑更加清晰)
遍历: (第一次遍历获得第一个节点的值,其后,进行运算) [遍历结束条件:cur节点的值为空]
返回值
难点
掌握二进制正反序的计算方法 1>.正序: 例1:101 ans = [(1*2)+0]2+1 例2:10011 ans = {[[(12)+0]2+0]2+1}2 + 1 2>.反序: 例1:101 ans = 1(2^0) + 0(2^1) + 1 (2^2) 【顺序从后往前】
二进制链表转整数题解(C++)class Solution {public: int getDecimalValue(ListNode* head) { ListNode* cur = head; int ans = 0; while (cur != nullptr) { ans = ans * 2 + cur->val; cur = cur->next; }