本文主要是介绍LeetCode每日一题 | 2807. 在链表中插入最大公约数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- LeetCode-2807. 在链表中插入最大公约数
- 题目描述
- 问题分析
- 程序代码(Golang 版本)
LeetCode-2807. 在链表中插入最大公约数
题目描述
原题链接
给你一个链表的头 head
,每个结点包含一个整数值。
在相邻结点之间,请你插入一个新的结点,结点值为这两个相邻结点值的 最大公约数 。
请你返回插入之后的链表。
两个数的 最大公约数 是可以被两个数字整除的最大正整数。
问题分析
回顾求两个数最大公约数的欧几里得算法:a
和b
的最大公约数等于b
和 a 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
}
这篇关于LeetCode每日一题 | 2807. 在链表中插入最大公约数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!