1. 程式人生 > 其它 >LeetCode騰訊精選練習50——第十三天

LeetCode騰訊精選練習50——第十三天

技術標籤:LeetCodeleetcode連結串列

題目160:相交連結串列
編寫一個程式,找到兩個單鏈表相交的起始節點。
題解:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
# a,b = headA, headB # while a!=b: # a = a.next if a else headB # b = b.next if b else headA # return a d = dict() while headA: d[headA] = 1 headA = headA.next while headB: if headB in d: return
headB headB = headB.next return None

執行結果:
在這裡插入圖片描述
題目169:多數元素
給定一個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列中出現次數 大於 ⌊ n/2 ⌋ 的元素。
你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。
題解:

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        nums_set = set(nums)
        for num in nums_set:
            if
nums.count(num) > len(nums)/2: return num

執行結果:
在這裡插入圖片描述
題目206:反轉連結串列
反轉一個單鏈表。
題解:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        # 迭代
        # res = None
        # while head:
        #     res, res.next, head = head, res, head.next
        # return res
        # 遞迴
        if head:
            p = head 
            q = head.next  
            while p.next:
                p.next = q.next 
                q.next = head
                head = q
                q = p.next
            return head
        else:
            return head

執行結果:
在這裡插入圖片描述