※ 引述《dont (dont)》之銘言:
: 2807. Insert Greatest Common Divisors in Linked List
: ## 思路
: 照著做 中間塞gcd
: ## Code
: ```python
: class Solution:
: def insertGreatestCommonDivisors(self, head: Optional[ListNode]) ->
: Optional[ListNode]:
: def get_gcd(x, y):
: while y:
: x, y = y, x % y
: return x
: curr = head
: while curr and curr.next:
: gcd = get_gcd(curr.val, curr.next.val)
: curr.next = node = ListNode(gcd, curr.next)
: curr = node.next
: return head
: ```
: 817. Linked List Components
: ## 思路
: 先把nums轉成set再掃LinkedList
: 如果node在nums裡就res+1並且跳過相連且在nums裡的node
: ## Code
: ```python
: class Solution:
: def numComponents(self, head: Optional[ListNode], nums: List[int]) -> int:
: nums = set(nums)
: res = 0
: while head:
: if head.val in nums:
: res += 1
: while head and head.val in nums:
: head = head.next
: else:
: head = head.next
: return res
: ```
思路:
照著做
Python Code:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def insertGreatestCommonDivisors(self, head: Optional[ListNode]) ->
Optional[ListNode]:
tmp = ListNode(next = head)
pre = head
head = head.next
while head:
x = math.gcd(head.val,pre.val)
pre.next = ListNode(x, next = head)
pre = head
head = head.next
return tmp.next