十三、二進制鏈表轉整數
給你一個單鏈表的引用結點 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
以上,再會~