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