Problem: 1290. 二进制链表转整数
文章目录
- 题目描述
 - 思路
 - 复杂度
 - Code
 
题目描述
思路
1.记录一个变量res初始化为0,指针p指向链表头;
2.循环每次res = res * 2 + p -> val;p = p -> next;(充分利用二进制数的特性;其中利用指针先指向一个节点)
复杂度
时间复杂度:
O ( n ) O(n) O(n);其中 n n n为链表的长度
空间复杂度:
O ( n ) O(n) O(n)
Code
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    /**
     * 
     * @param head The head node of linked list
     * @return int
     */
    int getDecimalValue(ListNode* head) {
        ListNode* p = head;
        int res = 0;
        while (p != nullptr) {
            res = res * 2 + p -> val;
            p = p -> next;
        }
        return res;
    }
};
                




















