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;
}
};