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

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

难度 : 中等

题目大意:

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

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

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

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

提示:

  • 链表中结点数目在 [1, 5000] 之间。
  • 1 <= Node.val <= 1000
输入:head = [18,6,10,3]
输出:[18,6,6,2,10,1,3]

img

递归实现

难点在于代码的实现,怎么求最小公倍数

最小公倍数的模板

int gcd(int a, int b) {return b ? gcd(b, a % b) : a;
}

代码实现

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:int gcd(int a, int b)  {return b ? gcd(b, a % b) : a;}ListNode* insertGreatestCommonDivisors(ListNode* head) {function<void(ListNode*)> dfs = [&](ListNode* u) -> void {if (!u->next) return;dfs(u->next);ListNode* newNode = new ListNode(gcd(u->val, u->next->val));newNode->next = u->next;u->next = newNode;};  dfs(head);return head;}
};

时间复杂度 O ( n ) O(n) O(n)

结束了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/325518.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Scikit-Learn线性回归(五)

Scikit-Learn线性回归五:岭回归与Lasso回归 1、误差与模型复杂度2、范数与正则化2.1、范数2.2、正则化3、Scikit-Learn Ridge回归(岭回归)4、Scikit-Learn Lasso回归1、误差与模型复杂度 在第二篇文章 Scikit-Learn线性回归(二) 中,我们已经给出了过拟合与模型泛化的概念并…

深入理解内存检测工具:一文解析内存检测工具的全貌与使用技巧

C和C是非常不安全且容易出错的编程语言&#xff0c;Address Sanitizer是由Google开发的一种工具&#xff0c;用于检测内存访问错误&#xff0c;如使用后释放&#xff08;use-after-free&#xff09;和内存泄漏。它已集成到GCC版本> 4.8中&#xff0c;可用于C和C代码。Addres…

RabbitMQ快速入门(详细)

RabbitMQ 消息中间件/消息队列 1、消息中间件 1、简介 **消息中间件也可以称消息队列&#xff0c;是指用高效可靠的消息传递机制进行与平台无关的数据交流&#xff0c;并基于数据通信来进行分布式系统的集成。**通过提供消息传递和消息队列模型&#xff0c;可以在分布式环境…

如何配置 VS Code 实现 git 密码免输入

目录 问题描述尝试过的失败方法问题分析最终采用的解决方案&#xff1a;利用 ssh key 提供密码免输入功能安装 git windows 命令工具在windows本地生成 ssh key将公钥安装到 git 服务器第一种方法第二种方法调试方法 参考资料: 问题描述 在 Windows 上&#xff0c;使用 Visual…

Protobuf 编码结构

编码结构 什么是protobuf protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法&#xff0c;可用于数据通信协议和数据存储等&#xff0c;它是 Google 提供的一个具有高效协议数据交换格式工具库&#xff0c;是一种灵活、高效和自动化机制的结构数据序列…

JavaScript 基础学习笔记(四):循环语句、while循环、中止循环、无限循环、for 语句

目录 一、循环语句 1.1 while循环 1.2 中止循环 1.3 无限循环 二、综合案例-ATM存取款机 三、for 语句 一、循环语句 1.1 while循环 while : 在…. 期间&#xff0c; 所以 while循环 就是在满足条件期间&#xff0c;重复执行某些代码。 语法&#xff1a; while (条件表…

Reids原理及简单命令

目录 1.关系数据库与非关系型数据库 关系型数据库 非关系型数据库 关系型数据库和非关系型数据库区别 数据存储方式不同 扩展方式不同 对事务性的支持不同 总结&#xff1a; 2. Redis简介 什么是reids reids优点 reids使用场景&#xff1a; reids快的原因 Redis数…

Java学习,一文掌握Java之SpringBoot框架学习文集(4)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

L1-085:试试手气

我们知道一个骰子有 6 个面&#xff0c;分别刻了 1 到 6 个点。下面给你 6 个骰子的初始状态&#xff0c;即它们朝上一面的点数&#xff0c;让你一把抓起摇出另一套结果。假设你摇骰子的手段特别精妙&#xff0c;每次摇出的结果都满足以下两个条件&#xff1a; 1、每个骰子摇出…

1.4 Unity协程

一、先说接口 接口是不能实例化的&#xff0c;想实例化接口&#xff0c;只能实例化继承了接口的类。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace InterfaceTest {interface IMyInterfa…

C#编程-使用集合

使用集合 您学习了如何使用数组来有效地存储和操作相似类型额数据。但是,以下限制于数组的使用相关联: 您必须在声明时定义数组的大小。您必须编写代码以对数组执行标准操作,如排序。让我们思考一个示例。假设您想要存储在组织工作的五个雇员的姓名。您可以使用以下语句来声…

免费分享一套Springboot+Vue前后端分离的在线教育平台系统,挺漂亮的

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringbootVue前后端分离的在线教育平台管理系统&#xff0c;分享下哈。 项目视频演示 【免费】SpringbootVue在线教育平台系统 Java毕业设计_哔哩哔哩_bilibili【免费】SpringbootVue在线教育平台系统 Ja…