力扣刷題日記(10)

十三、二進制鏈表轉整數

給你一個單鏈表的引用結點 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

整數倒置的方式比較

以上,再會~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章