演算法題 二進位製煉表轉整數(位運算)

2021-10-09 04:56:15 字數 844 閱讀 8076

給你乙個單鏈表的引用結點 head。鍊錶中每個結點的值不是 0 就是 1。已知此煉表是乙個整數數字的二進位制表示形式。

請你返回該鍊錶所表示數字的 十進位制值 。

示例:輸入:head = [1,0,1] #二進位制數為101

輸出:5

輸入:head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0] #二進位制數為100100111000000

輸出:18880

鍊錶順序是以二進位制最左邊為head,最右邊末位為tail

考慮到本題是二進位製煉表轉化為十進位制整數,我們可以採用位運算。

​ a shl b就表示把a轉為二進位制後左移b位(在後面添b個0)。例如100的二進位制為1100100,而110010000轉成十進位制是400,那麼100 shl 2 = 400。可以看出,a shl b的值實際上就是a乘以2的b次方,因為在二進位制數後添乙個0就相當於該數乘以2。

​ 通常認為a shl 1比a * 2更快,因為前者是更底層一些的操作。因此程式中乘以2的操作請盡量用左移一位來代替。

​ 定義一些常量可能會用到shl運算。你可以方便地用1 shl 16 - 1來表示65535。很多演算法和資料結構要求資料規模必須是2的冪,此時可以用shl來定義max_n等常量。

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

int res =0;

while

(head != null)

return res;

}}

二進位製煉表轉整數

給你乙個單鏈表的引用結點 head。鍊錶中每個結點的值不是 0 就是 1。已知此煉表是乙個整數數字的二進位制表示形式。請你返回該鍊錶所表示數字的 十進位制值 示例 1 輸入 head 1,0,1 輸出 5 解釋 二進位制數 101 轉化為十進位制數 5 示例 2 輸入 head 0 輸出 0 示例 ...

簡單題 1290 二進位製煉表轉整數

力扣刷題 給你乙個單鏈表的引用結點 head。鍊錶中每個結點的值不是 0 就是 1。已知此煉表是乙個整數數字的二進位制表示形式。請你返回該鍊錶所表示數字的 十進位制值 示例 1 輸入 head 1,0,1 輸出 5 解釋 二進位制數 101 轉化為十進位制數 5 示例 2 輸入 head 0 輸出 ...

1290 二進位製煉表轉整數

鏈結 給你乙個單鏈表的引用結點 head。鍊錶中每個結點的值不是 0 就是 1。已知此煉表是乙個整數數字的二進位制表示形式。請你返回該鍊錶所表示數字的 十進位制值 示例1 輸入 head 1,0,1 輸出 5 解釋 二進位制數 101 轉化為十進位制數 5 示例2 輸入 head 0 輸出 0示例3...