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

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

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

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

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

示例 1:
在这里插入图片描述
提示:

链表中结点数目在 [1, 5000] 之间。
1 <= Node.val <= 1000

直接模拟即可:

/*** 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:ListNode* insertGreatestCommonDivisors(ListNode* head) {if (head == nullptr){return nullptr;}ListNode *curNode = head;while (curNode->next){int gcd = getGCD(curNode->val, curNode->next->val);curNode->next = new ListNode(gcd, curNode->next);curNode = curNode->next->next;}return head;}private:int getGCD(int i, int j){int k = 0;do{k = i % j;i = j;j = k;} while (k != 0);return i;}
};

如果链表中有n个节点,此算法时间复杂度为O(n),空间复杂度为O(1)。

求公约数时,可直接使用C++标准库中的__gcd函数,它所在的头文件是algorithm:

/*** 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:ListNode* insertGreatestCommonDivisors(ListNode* head) {if (head == nullptr){return nullptr;}ListNode *curNode = head;while (curNode->next){int gcd = __gcd(curNode->val, curNode->next->val);curNode->next = new ListNode(gcd, curNode->next);curNode = curNode->next->next;}return head;}
};

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

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

相关文章

【亚马逊云科技】自家的AI助手 - Amazon Q

写在前面&#xff1a;博主是一只经过实战开发历练后投身培训事业的“小山猪”&#xff0c;昵称取自动画片《狮子王》中的“彭彭”&#xff0c;总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域&#xff0c;如今终有小成…

NVMe SSD IO压力导致宕机案例解读-1

近日&#xff0c;小编在内核pci模块变更提交记录里面&#xff0c;看到一条由联想工程师提交的一份变更&#xff0c;主要是针对DMA相关优化。小编根据提交内容&#xff0c;根据自己的理解分享给大家。&#xff08;原始git地址获取&#xff0c;请在后台私信输入关键字“IO宕机”&…

【模拟电路】EDA软件、绘制原理图和PCB

一、EDA软件 二、常用的PCB的EDA软件 三、PCB生产工艺制造流程 四、国产嘉立创EDA专业版使用 五、EDA软件-绘制开关电路原理图 六、原理图转PCB绘制 七、检查DRC 八、PCB下单流程 一、EDA软件 EDA是电子设计自动化&#xff08;Electronic Design Automation&#xff09;的缩写…

清风数学建模排版

Overview 链接&#xff1a;https://pan.baidu.com/s/11QBw3zBFNicwQWvWCfW1Gg?pwdepnz 提取码&#xff1a;epnz Latex 范文排版练习 b站刘海洋latex工作室&#xff0c;待还愿 Word基础 Word VBA&#xff0c;待还愿 fnF4&#xff1a;重复上一步操作 ctrlY&#xff1a;恢…

视频通话录制 方案 教程

一些基本概要 1 市面流行的音视频产品&#xff0c;都包含一对一、一对多、多对多通话&#xff0c;云端录制等这些基本功能&#xff0c;有些厂商支持本地服务录制。 2 本地服务录制&#xff0c;云端录制区别 两个录制区别在于&#xff0c;本地服务端录制的 SDK 要求部署在 …

简易机器学习笔记(八)关于经典的图像分类问题-常见经典神经网络LeNet

前言 图像分类是根据图像的语义信息对不同类别图像进行区分&#xff0c;是计算机视觉的核心&#xff0c;是物体检测、图像分割、物体跟踪、行为分析、人脸识别等其他高层次视觉任务的基础。图像分类在许多领域都有着广泛的应用&#xff0c;如&#xff1a;安防领域的人脸识别和…

对技术行业的深度思考

技术行业是当今世界最为热门和发展迅猛的领域之一。无论是互联网、人工智能还是区块链&#xff0c;技术的快速发展正在改变着我们的生活和社会。然而&#xff0c;我们是否真正思考过技术在我们生活中的影响和意义&#xff1f;本文将对技术行业展开深度思考&#xff0c;探讨其带…

LAMP平台搭建

目录 LAMP平台概述 1、Apache 网站服务基础 1.1、Apache 简介 &#xff08;1&#xff09;Apache 的起源 &#xff08;2&#xff09;Apache 的主要特点 1.2、安装 httpd 服务器 &#xff08;1&#xff09;准备工作 &#xff08;2&#xff09;源码编译及安装 &#…

【MySQL】MySQL如何查询和筛选存储的JSON数据?

MySQL如何查询和筛选存储的JSON数据&#xff1f; 一、背景介绍二、支持的JSON数据类型三、基础数据3.1 创建表3.2 插入 JSON 数据3.3 查询 JSON 数据 四、操作函数4.1 JSON_OBJECT4.2 JSON_ARRAY4.3 JSON_EXTRACT 一、背景介绍 JSON(JavaScript Object Notation)是一种轻量级的…

文心一言 VS 讯飞星火 VS chatgpt (171)-- 算法导论13.2 4题

四、用go语言&#xff0c;证明&#xff1a;任何一棵含n个结点的二叉搜索树可以通过 O(n)次旋转&#xff0c;转变为其他任何一棵含n个结点的二叉搜索树。(提示&#xff1a;先证明至多n-1次右旋足以将树转变为一条右侧伸展的链。) 文心一言&#xff1a; 这是一个有趣的问题&…

【JUC】Volatile关键字+CPU/JVM底层原理

Volatile关键字 volatile内存语义 1.当写一个volatile变量时&#xff0c;JMM会把该线程对应的本地内存中的共享变量值立即刷新回主内存中。 2.当读一个volatile变量时&#xff0c;JMM会把该线程对应的本地内存设置为无效&#xff0c;直接从主内存中读取共享变量 所以volatile…

【番外】【Airsim in Windows ROS in WSL2-Ubuntu20.04】环境配置大全

【番外】【Airsim in Windows &ROS in WSL2-Ubuntu20.04】环境配置大全 【前言&#xff08;可省略不看&#xff09;】1.在windows上面部署好UE4AirSim联合仿真环境2.在windows上面部署wsl2系统以及在wsl2上面部署ubuntu系统3.安装好ubuntu系统之后&#xff0c;目前只能在命…