算法每日一题:在链表中插入最大公约数 | 链表 | 最大公约数

hello,大家好,我是星恒
今天的题目是有关链表和最大公约数的题目,比较简单,核心在于求解最大公约数,我们题解中使用辗转相除法来求解,然后我们会在最后给大家拓展一下求解最大公约数的四个方法,供大家学习

今日题目:

题目:
给你一个链表的头 head ,每个结点包含一个整数值。
在相邻结点之间,请你插入一个新的结点,结点值为这两个相邻结点值的 最大公约数
请你返回插入之后的链表。
两个数的 最大公约数 是可以被两个数字整除的最大正整数。
示例:
示例 1:

输入:head = [18,6,10,3]
输出:[18,6,6,2,10,1,3]
解释:第一幅图是一开始的链表,第二幅图是插入新结点后的图(蓝色结点为新插入结点)。
- 18 和 6 的最大公约数为 6 ,插入第一和第二个结点之间。
- 6 和 10 的最大公约数为 2 ,插入第二和第三个结点之间。
- 10 和 3 的最大公约数为 1 ,插入第三和第四个结点之间。
所有相邻结点之间都插入完毕,返回链表。

示例 2:

输入:head = [7]
输出:[7]
解释:第一幅图是一开始的链表,第二幅图是插入新结点后的图(蓝色结点为新插入结点)。
没有相邻结点,所以返回初始链表。

提示:

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

分析:
本题的核心在于求最大公约数,求得最大公约数,我们将其连接到链表上就可以啦
辗转相除法,代码写法就是,两个数a,b相除取余c,将被除数b赋值个除数a,将余数c复制给被除数b,直到其余数c为0,也就是被除数b为0,这样,除数a就是他们的最大公约数!

题解:

class Solution {public ListNode insertGreatestCommonDivisors(ListNode head) {ListNode cur = head;while (cur.next != null) {cur.next = new ListNode(gcd(cur.val, cur.next.val), cur.next);cur = cur.next.next;}return head;}int gcd(int a, int b) {while (b != 0) {int tmp = a % b;a = b;b = tmp;}return a;}
}

拓展

求最大公约数

  • 辗转相除法
public int gcd(int a, int b) {while (b != 0) {int temp = a % b;a = b;b = temp;}return a;
}
  • 更相减损法
public int gcd(int a, int b) {while (a != b){if (a > b)a -= b;elseb -= a;}return a;
}
  • 递归法
public int gcd(int a, int b) {if (b == 0) return a;return gcd(b, a % b);
}

如果大家有什么思考和问题,可以在评论区讨论,也可以私信我,很乐意为大家效劳。
好啦,今天的每日一题到这里就结束了,如果大家觉得有用,可以可以给我一个小小的赞呢,我们下期再见!

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

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

相关文章

vue3学习 【2】vite起步和开发工具基本配置

vite的简介 官方文档 刚起步学习&#xff0c;所以我们只需要按照官方文档的入门流程即可。推荐阅读一下官网的为什么使用vite vite目前需要的node版本是18&#xff0c;可以参考上一篇文章的安装nvm&#xff0c;用来进行多版本的node管理。 vite安装与使用 npm create vitela…

Android两个APP之间跳转+手机图标修改

APP之间跳转 两个APP之间跳转同样使用Intent进行跳转&#xff0c;将需要跳转的APP都下载到手机中&#xff0c;通过主APP调用需要跳转的APP包名进行跳转。 最好在其中加上try-catch语句&#xff0c;当需要跳转的APP不存在时进行错误抓取。 代码如下&#xff1a; Intent mInten…

MySQL索引简介(包含索引优化,索引失效,最左前缀简洁版)

一、索引的基本概念 1.什么是索引 索引是一种数据结构&#xff0c;用于快速查找和访问数据库中的数据。它类似于书本的目录&#xff0c;可以帮助数据库管理系统快速定位到存储数据的位置。通过创建索引&#xff0c;我们可以加快数据库的查询速度并提高系统的性能。索引可以基于…

Notepad++ v7.7.1 安装及添加插件

1、notepad_v7.7.1.zip npp.7.7.1.Installer.x64.exe npp.7.7.1.Installer.x86.exe notepad_v7.7.1.ziphttps://www.123pan.com/s/VTMXjv-X6H6v.html 2、notepad插件包_64bit_4.zip ComparePlugin ---->文件对比插件 ComparePlugin.dllNppFTP ---->FTP、FTPES和SFTP …

苹果Mac图像修图软件Photomator和Pixelmator Pro 有什么区别?

同为一个团队设计的Mac修图软件Photomator和Pixelmator Pro有哪些区别呢&#xff1f;有哪些不一样的功能&#xff1f; Photomator和Pixelmator Pro区别如下&#xff1a; 1、用途不同 Photomator 和 Pixelmator Pro 是两个功能强大的应用程序&#xff0c;具有两个不同的用途。…

第8课 将推流端与播放端合并为一对一音视频聊天功能

在第二章的第7课&#xff0c;我们实现了一个推流端&#xff0c;可以把音视频推送到rtmp服务器&#xff1b;在第一章的第4课&#xff0c;我们实现了一个播放器&#xff0c;可以正常播放rtmp音视频流。聪明的你应该可以想到了&#xff1a;把推流端和播放端合并在一起&#xff0c;…

宋仕强论道之华强北的劣势(十八)

华强北微观上的劣势。华强北的企业同质化严重&#xff0c;经营策略和定价方式都差不多&#xff0c;内卷现象突出&#xff0c;价格战、恶性竞争频发&#xff0c;小企业利润空间不断被挤压。如华强北的手机配件市场&#xff0c;很多商户销售相同品牌、相同型号的手机壳、充电器、…

10款以上开源工具,用于大型语言模型应用开发

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

intersection observer实现图片懒加载

图片懒加载&#xff08;Lazy Load&#xff09;是一种优化网页性能的技术&#xff0c;它可以延迟图片的加载时间&#xff0c;只有当用户滚动到该图片的位置时才会进行加载。这样可以减少页面的初始加载时间&#xff0c;提高页面的响应速度和用户体验。 以下是使用浏览器原生支持…

skimage图像处理(全)

文章目录 一、简介二、安装三、模块简介&#xff1a;API reference四、项目实战4.1、2D图像处理4.1.1、打印图像属性4.1.2、读取 / 显示 / 保存图像&#xff1a;skimage.io.imread() skimage.io.imshow() skimage.io.imsave()4.1.3、颜色空间转换&#xff1a;skimage.color.r…

LeetCode2807. Insert Greatest Common Divisors in Linked List

文章目录 一、题目二、题解 一、题目 Given the head of a linked list head, in which each node contains an integer value. Between every pair of adjacent nodes, insert a new node with a value equal to the greatest common divisor of them. Return the linked l…

2401d,d理解模板映射

原文 关于映射带模板参数的函数,我惊讶地发现它仍可同运行时确定的函数,甚至是闭包等工作.我想理解它背后的机制. 注释掉的行会导致错误,即编译时无法确定choice(funcs),这是公平的,但它为何与上面两行的func不一样?我猜是因为函数在编译时是可见的字面,但闭包使这可疑. impo…

Python画草莓熊

前言 今天&#xff0c;我们来画草莓熊。 一、草莓熊 草莓熊&#xff0c;英文名Lotso&#xff0c;迪士尼公司和皮克斯动画工作室公司于2010年合作推出的动画片《玩具总动员3》(Toy Story3)的反派角色。Lotso就是大受欢迎的反派"草莓熊"--这是一个特殊的角色&#x…

C#的StringBuilder方法

一、StringBuilder方法 StringBuilder方法Append()向此实例追加指定对象的字符串表示形式。AppendFormat()向此实例追加通过处理复合格式字符串&#xff08;包含零个或更多格式项&#xff09;而返回的字符串。 每个格式项都由相应的对象自变量的字符串表示形式替换。AppendJoi…

计算机二级Python选择题考点——公共基础部分

计算机完成一条指令所花费的时间称为一个指令周期。(指令周期越短&#xff0c;指令执行就越快)顺序程序不具有并发性。(具有顺序性、封闭性和可再现性)结构化程序设计强调程序的易读性。系统软件&#xff1a;操作系统、编译程序、数据库管理系统 应用软件&#xff1a;杀毒软件在…

设置docker容器的时区

目录 基于Alpine镜像的Docker容器的Dockerfile中 基于dpkg包管理且使用APT的Linux发行版镜像的docker容器的Dockerfile中 基于Alpine镜像的Docker容器的Dockerfile中 # 替换国内源&#xff0c;可按需添加 RUN set -eux && sed -i s/dl-cdn.alpinelinux.org/mirrors.…

选择 省市区 组件数据 基于vue3 + elment-plus

h5 <el-cascader v-model"form.area" :props"{value: label,label: label }" :options"jsonData" change"handleChange" style"width: 100%;" /> script import jsonData from /utils/city.json; 选完省市区 数据是一…

iview inputNumber有一个默认值1,来看解决方案

iview inputNumber为什么总有一个默认值1&#xff0c;怎么让它为空。 修改编辑没问题&#xff0c;赋值都没问题&#xff0c;但是新增的时候会有默认值1&#xff0c;也没赋值 这种情况你要手动解决&#xff0c;看看当前值有没有被覆盖 我这个问题就是出现覆盖导致的 看代码似乎…

Linux 进程(十) 进程替换

用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec*函数以执行另一个程序。当进程调用一种exec*函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec*并不创建新进程,所以调用exec*前…

垂直领域大模型——文档图像大模型的思考与探索

〇、前言 12月1日&#xff0c;2023中国图象图形学学会青年科学家会议在广州召开。超1400名研究人员齐聚一堂&#xff0c;进行学术交流与研讨&#xff0c;共同探索促进图象图形领域“产学研”交流合作。 大会上&#xff0c;合合信息智能技术平台事业部副总经理、高级工程师丁凯博…