ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

LeetCode每日一题 | 2807. 在链表中插入最大公约数

2026/9/18 13:45:03 拓冰建站 浏览量
LeetCode每日一题 | 2807. 在链表中插入最大公约数

文章目录

    • LeetCode-2807. 在链表中插入最大公约数
      • 题目描述
      • 问题分析
      • 程序代码(Golang 版本)

LeetCode-2807. 在链表中插入最大公约数

题目描述

原题链接

给你一个链表的头 head ,每个结点包含一个整数值。

在相邻结点之间,请你插入一个新的结点,结点值为这两个相邻结点值的 最大公约数

请你返回插入之后的链表。

两个数的 最大公约数 是可以被两个数字整除的最大正整数。

问题分析

回顾求两个数最大公约数的欧几里得算法ab的最大公约数等于ba mod b的最大公约数

剩下的部分就是简单的链表遍历以及插入新结点的问题。

程序代码(Golang 版本)

/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func gcd(a, b int) int {for b != 0 {a, b = b, a % b}return a
}func insertGreatestCommonDivisors(head *ListNode) *ListNode {list := headfor list.Next != nil {t := gcd(list.Val, list.Next.Val)list.Next = &ListNode{t, list.Next}list = list.Next.Next}return head
}