1. 程式人生 > 其它 >leetcode 1290 二進位制連結串列轉整數(十進位制資料也是類似的)

leetcode 1290 二進位制連結串列轉整數(十進位制資料也是類似的)

技術標籤:C/C++程式設計序筆記連結串列

1290. 二進位制連結串列轉整數

難度簡單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%的使用者