LeetCode騰訊精選練習50——第十三天
阿新 • • 發佈:2021-01-25
題目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
執行結果: