1290 二进制链表转整数(位操作)简单题
题目:
1.单链表
2.引用结点head(头结点)
3.每个结点的值为0或1
4.诸位读取后返回十进制
思路:
1.链表首先考虑长度,文中没有给出长度,考虑遍历到无结点的位置
2.从二进制转为十进制,每次首先读取的都是二进制的最高位,所以考虑在遍历时,先对上次结果进行左移(*2)操作,然后加上本次结果
3.位操作知识点:
3.1 << 左移,左移一位,结果 *2
3.2 >> 右移,右移一位,结果 /2
3.3 | 位或运算符 ,任何位为1,结果返回1
3.4 & 位与运算符,两位均为1,返回1,否则返回0
3.5 ^ 位XOR运算符,异或运算符,不同为1,相同为0
class Solution:
def getDecimalValue(self, head: ListNode) -> int:
cur = head
ans = 0
while cur != None:
ans = ans * 2 + cur.val
cur = cur.next
return ans
Python一定要注意缩进!!!