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

思路:遍历链表,对于每一个结点求出它与下一个结点的最大公约数并插入到俩个结点之间

代码: 

/*** 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) {ListNode *p = head; //定义一个指针遍历链表                          while(p->next){int a = p->val, b = p->next->val, r = 1;    //取出当前结点和下一个结点的值while(r){   //辗转相除求最大公约数r = a % b;a = b;b = r;}p->next = new ListNode(a,p->next);  //插入新结点,值为最大公约数,next为p的nextp = p->next->next;  //p往后移俩个结点,因为插入了一个结点}return head;}
};

 

__gcd(x,y)函数,用于求x,y的最大公约数

优化后代码:

/*** 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) {ListNode *p = head;               while(p->next){p->next = new ListNode(__gcd(p->val, p->next->val), p->next);   //直接用__gcd函数求最大公约数p = p->next->next;}return head;}
};

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

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

相关文章

【数据结构】二叉树的概念及堆

前言 我们已经学过了顺序表、链表、栈和队列这些属于线性结构的数据结构,那么下面我们就要学习我们第一个非线性结构,非线性结构又有哪些值得我们使用的呢?那么接下来我们就将谈谈树的概念了。 1.树的概念与结构 1.1树的概念 树是一种非线性…

基于JavaWeb+SSM+Vue家政项目微信小程序系统的设计和实现

基于JavaWebSSMVue家政项目微信小程序系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2…

复旦MBA科创青干营(二期):探索合肥科创企业的创新之路

11月18日-19日,复旦MBA科创青干营二期学生开启了整合实践活动的第三次企业参访,前往位于合肥的蔚来第二先进制造基地、安徽万邦医药科技股份有限公司和合肥国轩高科动力能源有限公司,在学术导师和科创企业家“双导师”的指导下,深…

32.virtual reality system concepts illustrated using OSVR

32.1 Common Space This section describes the spaces needed to support viewing and interacting with the virtual world. 本节介绍支持查看虚拟世界并与之交互所需的空间。 The spaces required for supporting viewing and interacting with a virtual world can vary …

UAV | 多算法在多场景下的无人机路径规划(Matlab)

近年来,无人机(unmanned aerial vehicle,UAV)由于其灵活度高、机动性强、安全风险系数小、成本低等特点,被广泛应用于搜索巡逻、侦察监视、抢险救灾、物流配送、电力巡检、农业灌溉等军用或民用任务。路径规划是无人机执行任务的关键&#xf…

使用 Next.js 构建电商购物车

如今,无论你是经验丰富的开发人员还是完全的初学者,你都没有什么不能用 React 做的。 这主要是由于创建了诸如Next.js之类的工具,这些工具成功地简化了React前端开发。 因此,我们将探讨如何快速制作 Next.js 电子商务单页应用程序…

响应式开发

响应式开发的原理Bootstrap前端开发框架Bootstrap栅格系统阿里百秀首页案例 响应式开发原理 1 响应式需要一个父级做为布局容器,来配合子级元素来实现变化效果。 2 在不同屏幕下,通过媒体查询来改变这个布局容器的大小,再改变里面子元素的排…

内存 vs 硬盘:固态硬盘代替内存可以工作吗?

使用固态硬盘代替内存可以吗? 答案是​:不可以​。 ​这个问题看似复杂,其实包含很多方面的原因。 一、存储结构方面 固态硬盘和内存在存储结构上就完全不同。 1.1 固态硬盘采用的是3D闪存单元阵列来存储数据 这些存储单元被一层层地堆…

C++中的new和delete

相关文章 C智能指针 文章目录 相关文章前言一、new 运算符1. operator new 函数的范围2. 在类中重载new运算符3. 分配失败 二、delete 运算符1. 内存泄露统计示例2. 在类中重载delete运算符 总结 前言 在C中,new和delete是用于动态内存管理的运算符,它们…

【SpringCloud】设计原则之 DevOps 与无状态服务

一、设计原则之 DevOps DevOps 一词来自 Development 和 Operation 的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。它要求开发、测试、运维进行一体化的合作,进行更小、…

关键词优化完整 “操作 “指南

关键词优化的定义 在内容中突出相关关键词的行为,有助于将谷歌流量引向您的网站。关键词优化要求内容创建者做到以下几点: 研究并发现最佳关键词找到自然的方式在内容中突出相关词语 看看,你已经创建了一些很棒的内容。你做了研究&#xf…

【每日一题】在链表中插入最大公约数

文章目录 Tag题目来源解题思路方法一:迭代 写在最后 Tag 【迭代】【辗转相除法】【链表】【2024-01-06】 题目来源 2807. 在链表中插入最大公约数 解题思路 方法一:迭代 思路 首先需要求两个数的最大公约数,使用辗转相除法。实现代码如下…