leetcode 1290 二進位制連結串列轉整數(十進位制資料也是類似的)
阿新 • • 發佈:2021-01-30
技術標籤:C/C++程式設計序筆記連結串列
難度簡單66收藏分享切換為英文接收動態反饋
給你一個單鏈表的引用結點head
。連結串列中每個結點的值不是 0 就是 1。已知此連結串列是一個整數數字的二進位制表示形式。
請你返回該連結串列所表示數字的十進位制值。
示例 1:
輸入:head = [1,0,1] 輸出:5 解釋:二進位制數 (101) 轉化為十進位制數 (5)
示例 2:
輸入:head = [0] 輸出:0
示例 3:
輸入:head = [1] 輸出:1
示例 4:
輸入:head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0] 輸出:18880
示例 5:
輸入:head = [0,0] 輸出:0
提示:
- 連結串列不為空。
- 連結串列的結點總數不超過
30
。 - 每個結點的值不是
0
就是1
。
通過次數39,216提交次數48,399
二進位制可以移位,十進位制可以乘以10
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: int getDecimalValue(ListNode* head) { if (head == NULL) return 0; int ans = 0; while (head) { ans = (ans << 1) + head->val; head = head->next; } return ans; } };
執行結果:
通過
顯示詳情
執行用時:0 ms, 在所有C++提交中擊敗了100.00%的使用者
記憶體消耗:7.9 MB, 在所有C++提交中擊敗了97.59%的使用者