当前位置: 首页 > news >正文

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;}
};

相关文章:

  • HLS 2017.4 导出 RTL 报错:ERROR: [IMPL 213-28] Failed to generate IP.
  • C语言—第1次作业:编译与连接基础知识
  • AI:106-基于卷积神经网络的遥感图像地物分类
  • 2023-12-25 LeetCode每日一题(不浪费原料的汉堡制作方案)
  • k8s的声明式资源管理
  • java struts2教务管理系统Myeclipse开发mysql数据库struts2结构java编程计算机网页项目
  • RocketMQ5.0延时消息时间轮算法
  • Postgresql源码(119)PL/pgSQL中ExprContext的生命周期
  • 3D视觉-相机选用的原则
  • STM32 基础知识(探索者开发板)--135讲 ADC转换
  • 金和OA C6 UploadFileEditorSave.aspx 文件上传漏洞复现
  • Elasticsearch 优化常用思路
  • 防火墙未开端口导致zookeeper集群异常,kafka起不来
  • Unity检测地面坡度丨人物上坡检测
  • 【elfboard linux开发板】7.i2C工具应用与aht20温湿度寄存器读取
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • CSS盒模型深入
  • css属性的继承、初识值、计算值、当前值、应用值
  • Flannel解读
  • Flex布局到底解决了什么问题
  • JavaScript中的对象个人分享
  • JSONP原理
  • leetcode-27. Remove Element
  • nodejs调试方法
  • python 学习笔记 - Queue Pipes,进程间通讯
  • spring + angular 实现导出excel
  • SQLServer之索引简介
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 分布式事物理论与实践
  • 分享几个不错的工具
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 什么是Javascript函数节流?
  • 小试R空间处理新库sf
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 栈实现走出迷宫(C++)
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • #WEB前端(HTML属性)
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (七)Java对象在Hibernate持久化层的状态
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)winform之ListView
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NetCore 如何动态路由
  • .NET文档生成工具ADB使用图文教程
  • .net中的Queue和Stack
  • @Autowired多个相同类型bean装配问题
  • [APIO2012] 派遣 dispatching
  • [C#] 基于 yield 语句的迭代器逻辑懒执行