【Leetcode -141.环形链表 -2.两数相加】

news2024/11/23 8:33:10

Leetcode

  • Leetcode -141.环形链表
  • Leetcode -2.两数相加

Leetcode -141.环形链表

题目:给你一个链表的头节点 head ,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。

如果链表中存在环 ,则返回 true 。 否则,返回 false 。

示例 1:
输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。

示例 2:
输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:
输入:head = [1], pos = -1
输出:false
解释:链表中没有环。

提示:
链表中节点的数目范围是 [0, 10^4]
-10^5 <= Node.val <= 10^5
pos 为 -1 或者链表中的一个 有效索引 。

我们的思路是快慢指针,定义两个指针fast和slow,fast每次走两步,slow每次走一步,如果有环的话,fast一定能追上slow;如图:

在这里插入图片描述

fast走两步,slow走一步:
在这里插入图片描述
fast走两步,slow走一步:

在这里插入图片描述

最终fast追上slow,即它们相等的时候;
在这里插入图片描述

代码:

		bool hasCycle(struct ListNode *head) 
		{
		    struct ListNode *fast = head,*slow = head;
		    while(fast && fast->next)
		    {
		        slow = slow->next;
		        fast = fast->next->next;
		        if(slow == fast)
		        {
		            return true;
		        }
		    }
		    return false;
		}

Leetcode -2.两数相加

题目:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例 1:
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.

示例 2:
输入:l1 = [0], l2 = [0]
输出:[0]

示例 3:
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]

提示:
每个链表中的节点数在范围 [1, 100] 内
0 <= Node.val <= 9
题目数据保证列表表示的数字不含前导零

我们的思路是,将链表逐一相加拿下来,计算两个结点val之和,因为每个结点只能存放0-9的数字,所以每十进一,用flag来存放这个一,所以两个结点val之和加上flag,再取余才是拿下来放进新链表的val;当两个链表都空了,如果flag中还留着一,那么要再开辟一个结点,val为1,放到新链表的尾部;

如图,第一次相加:

在这里插入图片描述

第二次相加,n1+n2 = 10,需要进一,所以flag在相加完后变成1;

在这里插入图片描述

第三次相加:

在这里插入图片描述

当两个链表都走完,但是上两个结点相加进10,flag还留了个1,所以要再开辟一个结点,存放1,把它放到链表的尾部;
在这里插入图片描述

最后的结果:

在这里插入图片描述

		struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2)
		{
			struct ListNode* tail = NULL, * head = NULL;
			int flag = 0, n1, n2;
		
			//当l1或者l2其中一个不为空时继续
			while (l1 || l2)
			{
				//判断l1或者l2是否为空,为空则返回0,不为空则返回它的val
				n1 = l1 ? l1->val : 0;
				n2 = l2 ? l2->val : 0;
		
				//定义sum等于两节点之和加上flag
				int sum = n1 + n2 + flag;
		
				//初次相加
				if (tail == NULL)
				{
					struct ListNode* p = malloc(sizeof(struct ListNode));
					tail = head = p;
					tail->val = sum % 10;
					tail->next = NULL;
				}
		
				//非初次相加
				else
				{
					struct ListNode* p = malloc(sizeof(struct ListNode));
					p->val = sum % 10;
					p->next = NULL;
					tail->next = p;
					tail = tail->next;
				}
		
				//flag取sum的商,即判断sum是否大于等于10
				flag = sum / 10;
		
				//如果l1不为空,l1继续迭代
				if (l1)
				{
					l1 = l1->next;
				}
				//如果l2不为空,l2继续迭代
				if (l2)
				{
					l2 = l2->next;
				}
			}
		
			//若上一次相加的进一还没处理,就直接开辟一个结点,val为1,放到链表的尾部
			if (flag == 1)
			{
				struct ListNode* p = malloc(sizeof(struct ListNode));
				p->val = 1;
				p->next = NULL;
				tail->next = p;
			}
			return head;
		}

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

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

相关文章

第二届易派客工业品展圆满落幕 3天超7万人次观展

4月15日&#xff0c;第二届易派客工业品展览会在苏州国际博览中心成功闭幕&#xff0c;展会期间共7.4万人次观展。展会以“绿色•智造•融通•赋能”为主题&#xff0c;为参展企业衔接供需、共享商机、共促发展提供平台&#xff0c;推动工业企业数字化转型、致力供应链优化升级…

AntdesignVue 局部全屏后Message、Select 、Modal、Date等组件不显示问题解决方案(最终版)

1、对this.$message.....这种的消息提示组件解决方案如下 在main.js中全局配置消息提示 //单独引用需修改的元素 import { message } from ant-design-vue message.config({maxCount: 1,getContainer:() > document.getElementById(showBigModal) || document.body //父组件…

责任链设计模式知多少

目录 目标 概述 实现 单向设计模式 双向设计模式 目标 熟悉责任链设计模式&#xff0c;了解责任链设计模式的使用场景、具体实现&#xff0c;单链责任链设计模式和双链责任链设计模式的区别。 概述 一、行为设计模式 行为设计模式是设计模式的一种类型。该类型的设计模…

three.js车辆可视化教程-完整0到1

概述 如有不明白的可以加QQ&#xff1a;2354528292&#xff1b;wx: aichitudousien 更多教学视频请访问&#xff1a;https://space.bilibili.com/236087412 详细教学请到上方视频链接访问&#xff0c;总共3个多小时的教学~ Three.js车展系统 搭建开发环境 使用的开发框架是vu…

计算机程序安装及使用须知_kaic

安装及使用须知 1 数据库建模程序的使用 本文件夹中的“PowerDesigner建模”目录下包含三个可运行文件TMS1.cdm&#xff0c;TMS.cdm&#xff0c;TMS.pdm分别为TMS系统的实体关系简图、实体关系图和数据库模型&#xff0c;使用PowerDesigner集成开发环境打开任意一个文件即可运…

第二节 ogre sdk 配置使用

上一节&#xff0c;我们介绍过了ogre源码的编译学习&#xff0c;在实际项目中&#xff0c;我们并不需要如此复杂的编译安装过程&#xff0c;可以直接使用官网提供的sdk库进行项目环境配置。下面简单介绍下配置过程。 一 OgreSDK下载 https://dl.cloudsmith.io/public/ogrecav…

Know-Evolve: Deep Temporal Reasoning for Dynamic Knowledge Graphs

Know-Evolve: Deep Temporal Reasoning for Dynamic Knowledge Graphs Rakshit Trivedi 1 Hanjun Dai 1 Yichen Wang 1 Le Song 1 知识背景 Temporal Knowledge Graph : facts occur,recur or evolve over time in these graphs,and each edge in the graphs have temporal …

FPGA基于XDMA实现PCIE X8视频采集HDMI输出 提供工程源码和QT上位机程序和技术支持

目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案5、vivado工程详解6、驱动安装7、QT上位机软件8、上板调试验证9、福利&#xff1a;工程代码的获取 1、前言 PCIE&#xff08;PCI Express&#xff09;采用了目前业内流行的点对点串行连接&#xff0c;比起 PC…

【翻译一下官方文档】之uniapp的数据缓存

uni.setStorage(OBJECT) setstorage | uni-app官网 uni.setStorage(OBJECT) 将数据存储在本地缓存中指定的 key 中&#xff0c;会覆盖掉原来该 key 对应的内容&#xff0c;这是一个异步接口。 参数名类型必填说明keyString是本地缓存中的指定的 keydataAny是需要存储的内容&am…

git workflow

git workflow 讲一下常用的 workflow&#xff0c;这个主要是根据自己个人工作经验&#xff0c;每个项目在实践上总会有些许的不同&#xff0c;求同存异。 单分支工作 最糟糕的 workflow 是所有人全都在 main/master 上干活&#xff0c;如果只是两三个人的 team 可能还能存活…

忆暖行动|“四方食事,不过人间一碗烟火”

四方食事,不过人间一碗烟火 外婆&#xff0c;如果要您选择一个乡村很有代表的食物&#xff0c;您会选择什么&#xff1f; 当然是米饭&#xff0c;人要吃饭&#xff0c;没有米饭就没有力气劳作&#xff0c;而且大米还能做很多美食&#xff0c;比如米饼&#xff0c;米糕&#x…

亚马逊测评有哪些误解?

亚马逊平台是全球性的互联网电商网络平台&#xff0c;成立至今&#xff0c;平台站点覆盖了全球多个国家&#xff0c;各个地区之间的商品交易也变得更加频繁&#xff0c;随着平台商家增多&#xff0c;为了提高自身排名&#xff0c;越来越多的商家开始找人为他们的店铺和产品进行…

Git比较好用的一些操作

git stash 可以缓存一些修改&#xff0c;不用做提交。例如当前分支做了修改&#xff0c;不想提交&#xff0c;有需要切换分支时候。 常用命令&#xff1a; git stash list&#xff1a;查看缓存列表 git stash list git stash save “备注信息”: 缓存当前分支所有修改 git …

快乐数链表篇

编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1&#xff…

【数据库数据恢复】ORACLE常见数据灾难的数据恢复可能性分析

Oracle数据库常见数据灾难&#xff1a; 1、ORACLE数据库无法启动或无法正常运行。 2、ORACLE ASM存储破坏。 3、ORACLE数据库数据文件丢失。 4、ORACLE数据库数据文件损坏。 5、ORACLE DUMP文件损坏。 Oracle数据库常见数据灾难的数据恢复可能性分析&#xff1a; 1、O…

正则表达式 - 简单模式匹配

目录 一、测试数据 二、简单模式匹配 1. 匹配字面值 2. 匹配数字和非数字字符 3. 匹配单词与非单词字符 4. 匹配空白字符 5. 匹配任意字符 6. 匹配单词边界 7. 匹配零个或多个字符 8. 单行模式与多行模式 一、测试数据 这里所用文本是《学习正则表达式》这本书带的&a…

统计学习方法第二章——感知机

x.1 前言 perceptron感知机是二分类的线性分类模型&#xff0c;输入为实例的特征向量&#xff0c;输出为实例类别(取-1&#xff0c;1)。perceptron旨在求出将训练数据进行线性划分的分离超平面&#xff0c;属于classification判别模型&#xff0c;策略为基于误分类的损失函数&…

MCU短按长按的功能

.外设&#xff1a;一个io口、一个定时器。 为了降低上手的门槛&#xff0c;本文仅使用一个IO口作演示。 实现思路 使用定时器&#xff0c;定时20ms来读取简化的按键状态机。 这里简化了状态机&#xff0c;大家只需明白三个概念。 状态&#xff1a;数量为有限个&#xff0c;记…

css初入门:网页布局之网格布局-grid

文章目录 网格布局-grid1、设置网格布局2、网格布局介绍3、网格容器grid-template-columns属性grid-template-rows 属性justify-content 属性justify-items属性align-content 属性 4、网格项目grid-column-start、grid-column-start、grid-column属性grid-row-start、grid-row-…

ChatGPT来了,必须紧跟时代潮流!

大家好&#xff0c;我是瓜叔。 正如标题所示&#xff0c;最近几周令人难以置信的兴奋。几乎每天都有surprise的新AI产品发布&#xff0c;特别是ChatGPT-4和AI绘画。这是一种科幻即将成为现实的感觉。例如&#xff0c;看看下面的网络图像&#xff0c;它是由AI生成的。当我看到它…