十三、二进制链表转整数
给你一个单链表的引用结点 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。
传送门:二进制链表转整数
嗯…其实就是链表的遍历,然后再把二进制数组转整数呗
题解:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def getDecimalValue(self, head: ListNode) -> int:
count = 0
group = []
while(head!= None):
group.append(head.val)
head = head.next
for i in range(len(group)):
count += group[-(i+1)]*(2**i)
return count
十四: 猜数字
小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次?
输入的guess数组为 小A 每次的猜测,answer数组为 小B 每次的选择。guess和answer的长度都等于3。
示例 1:
输入:guess = [1,2,3], answer = [1,2,3]
输出:3
解释:小A 每次都猜对了。
示例 2:
输入:guess = [2,2,3], answer = [3,2,1]
输出:1
解释:小A 只猜对了第二次。
限制:
guess的长度 = 3
answer的长度 = 3
guess的元素取值为 {1, 2, 3} 之一。
answer的元素取值为 {1, 2, 3} 之一。
传送门:猜数字
…没什么好说的,很简单的比较
题解:
class Solution:
def game(self, guess: List[int], answer: List[int]) -> int:
count = 0;
for i in range(len(guess)):
if guess[i]==answer[i]:
count +=1
return count
十五:回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
传送门:回文数
题解:
class Solution:
def isPalindrome(self, x: int) -> bool:
str1 = str(x)
str2 = str1[::-1]
return str1 == str2
不转字符串的话,可以试试把整数倒置…嗯,中间记得强制int:
题解:
class Solution:
def isPalindrome(self, x: int) -> bool:
if(x<0):
return False
else:
rev = self.reverse(x)
return rev == x
def reverse(self,x:int) -> int:
rev = 0
while(x>0):
rev = rev*10+x%10;
x= int(x/10)
return rev
以上,再会~