简易签名设计一笔签/网站seo优化服务商

简易签名设计一笔签,网站seo优化服务商,网站如何做h5动态页面,西安有什么旅游景点两两交换链表中的节点 题目示意: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 原先我的思路是图像上的思路,但是我感觉还是很复杂…

两两交换链表中的节点

题目示意:

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

原先我的思路是图像上的思路,但是我感觉还是很复杂,

思路1:

原代码:
class ListNode:def __init__(self,data=0,next=None):self.value = dataself.next = next
class MylinkList:def __init__(self):self.dummy_head = ListNode()self.size = 0def addAtHead(self,index:int)->None:self.dummy_head = ListNode(index,self.dummy_head.next)self.size += 1def printList(self)->None:current = self.dummy_headwhile current:print(current.value,end = "->" if current.next else "")current = current.nextprint()def swapList(self)->None:if self.size <= 1:print("元素太少不进行翻转")returnelse:current_1 = self.dummy_head.nextcurrent_2 = current_1.nextcurrent_3 = current_2.nextself.dummy_head.next = current_2current_2.next = current_1current_1.next = current_3for i in range(1,self.size // 2):# 更新指针temp = current_1current_2 = current_3.nextcurrent_1 = current_3current_3 = current_2.next# 交换位置temp.next = current_2current_2.next = current_1current_1.next = current_3# 开始调用函数
obj = MylinkList()
obj.addAthead(1)
obj.addAthead(10)
obj.addAthead(2)
obj.addAthead(3)
obj.addAthead(21)
obj.addAthead(4)
obj.addAthead(33)
obj.printList()
obj.swapList()
obj.printList()
报错:

AttributeError: 'NoneType' object has no attribute 'next'

这个报错主要是因为在current_3的时候很可能是空的,所以我们需要修改代码,同时还有一些其他的错误,主要是对代码的掌控能力还不够:

代码修正:
    def addAtHead(self,index:int)->None:self.dummy_head.next = ListNode(index,self.dummy_head.next)self.size += 1

不可以修改头节点

原代码修改后:
class ListNode:def __init__(self,data=0,next=None):self.value = dataself.next = next
class MylinkList:def __init__(self):self.dummy_head = ListNode()self.size = 0def addAtHead(self,index:int)->None:self.dummy_head.next = ListNode(index,self.dummy_head.next)self.size += 1def printList(self)->None:current = self.dummy_headwhile current:print(current.value,end = "->" if current.next else "")current = current.nextprint()def swapList(self)->None:if self.size <= 1:print("元素太少不进行翻转")return# 使用虚拟头结点简化current_1 = self.dummy_headcurrent_2 = current_1.nextcurrent_3 = current_2.nextwhile current_1.next!=None and current_1.next.next!=None:current_2.next = current_3.nextcurrent_3.next = current_2current_1.next = current_3#交换current_1 = current_3current_2 = current_1.next if current_1 else Nonecurrent_3 = current_2.next if current_2 else None# 开始调用函数
obj = MylinkList()
obj.addAtHead(1)
obj.addAtHead(10)
obj.addAtHead(2)
obj.addAtHead(3)
obj.addAtHead(21)
obj.addAtHead(4)
obj.addAtHead(33)
obj.printList()
obj.swapList()
obj.printList()
思路2:
代码:
class ListNode:def __init__(self,data=0,next=None):self.value = dataself.next = nextclass MylinkList:def __init__(self):self.dummy_head = ListNode()self.size = 0def addAtHead(self,index:int)->None:self.dummy_head.next = ListNode(index,self.dummy_head.next)self.size += 1def printList(self)->None:current = self.dummy_headwhile current:print(current.value,end = "->" if current.next else "")current = current.nextprint()def swapList(self)->None:if self.size <= 1:print("元素太少不进行翻转")returncurrent = self.dummy_headtemp_1 = current.nexttemp_2 = temp_1.nextwhile current.next and current.next.next:temp_1.next = temp_2.nexttemp_2.next = temp_1current.next = temp_2current = temp_2 if temp_2 else Nonetemp_1 = current.next if current else Nonetemp_2 = temp_1.next if temp_1 else None# 开始调用
obj = MylinkList()
obj.addAtHead(1),obj.addAtHead(2),obj.addAtHead(3),obj.addAtHead(10)
obj.addAtHead(15),obj.addAtHead(16),obj.addAtHead(20)
obj.printList()
obj.addAtHead(35)
obj.printList()
obj.swapList()
obj.printList()

删除链表的倒数第N个节点

题目示意:

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

进阶思考:

你能尝试使用一趟扫描实现吗?

链表的题建议大家画图来思考:

针对删除的代码:

def deleteN(self,index:int)->None:if index>self.size:print("超出了链表的范围")returnelse:current = self.dummy_headfor i in range(0,index-1):current = current.nextprint(current.next.value)current.next =current.next.nextself.size -= 1

完整的代码:

class ListNode:def __init__(self,data=0,next=None):self.value = dataself.next = nextclass MylinkList:def __init__(self):self.dummy_head = ListNode()self.size = 0def addAtHead(self,index:int)->None:self.dummy_head.next = ListNode(index,self.dummy_head.next)self.size += 1def printList(self)->None:current = self.dummy_head.nextwhile current:print(current.value,end = "->" if current.next else "")current = current.nextprint()def swapList(self)->None:if self.size <= 1:print("元素太少不进行翻转")returncurrent = self.dummy_headtemp_1 = current.nexttemp_2 = temp_1.nextwhile current.next and current.next.next:temp_1.next = temp_2.nexttemp_2.next = temp_1current.next = temp_2current = temp_2 if temp_2 else Nonetemp_1 = current.next if current else Nonetemp_2 = temp_1.next if temp_1 else Nonedef deleteN(self,index:int)->None:if index>self.size:print("超出了链表的范围")returnelse:current = self.dummy_headfor i in range(0,index-1):current = current.nextprint(current.next.value)current.next =current.next.nextself.size -= 1# 开始调用
obj = MylinkList()
obj.addAtHead(1),obj.addAtHead(2),obj.addAtHead(3),obj.addAtHead(10)
obj.addAtHead(15),obj.addAtHead(16),obj.addAtHead(20)
obj.printList()
obj.addAtHead(35)
obj.printList()
obj.swapList()
obj.printList()
obj.deleteN(4)
obj.printList()

链表相交

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。

图示两个链表在节点 c1 开始相交:

题目数据 保证 整个链式结构中不存在环。

注意,函数返回结果后,链表必须 保持其原始结构 。

示例 1:

此题暂时留作思考题,希望大家都思考思考

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

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

相关文章

【Gin-Web】Bluebell社区项目梳理5:投票功能分析与实现

本文目录 一、投票功能投票流程实现代码redis投票 一、投票功能 投票流程 首先我们要明确&#xff0c;就是 谁&#xff08;哪个用户&#xff1a;userID&#xff09; 给 哪个帖子&#xff08;postID&#xff09; 投了 什么票&#xff08;赞成票or反对票&#xff09;。 赞成票…

vue-treeselect显示unknown的问题及解决

问题 解决办法 去node-modules包里面找到这个组件的源码&#xff0c;在它dist文件里面找到这个文件&#xff0c;然后搜索unknown&#xff0c;把它删掉就可以解决了。

MFC中CString的Format、与XML中的XML_SETTEXT格式化注意

1、在MFC中导入 "msxml6.dll"&#xff0c;并使用其中的XML_SETTEXT函数&#xff0c;此调用在进行格式化的时候&#xff0c;调用的还是CString.Format()函数&#xff01; 2、用double类型的数据&#xff0c;格式化整形数%d之前&#xff0c;必须将double强转为int&…

从零开始用react + tailwindcs + express + mongodb实现一个聊天程序(一)

项目包含5个模块 1.首页 (聊天主页) 2.注册 3.登录 4.个人资料 5.设置主题 一、配置开发环境 建立项目文件夹 mkdir chat-project cd chat-project mkdir server && mkdir webcd server npm init cd web npm create vitelatest 创建前端项目时我们选择javascrip…

具有整合各亚专科医学领域知识能力的AI智能体开发纲要(2025版)

整合各亚专科医学领域知识能力的AI代理的开发与研究 一、引言 1.1 研究背景 在科技飞速发展的当下,人工智能(AI)已成为推动各行业变革的关键力量,医疗领域也不例外。近年来,AI 在医疗行业的应用取得了显著进展,从医学影像诊断到疾病预测,从药物研发到个性化医疗,AI 技…

YOLO11 【四】 【DNF制作自己的数据集,切割视频以及labelimg 闪退问题】

一、问题labelimg 闪退 一点w打标 labelimg就闪退 **原因 &#xff1a; python 版本太高 ** 解决办法&#xff1a;单独创建一个虚拟环境用于打标 conda create -n labelimg python3.9 二、使用python脚本切割视频 # -*- coding: utf-8 -*- import cv2 import osdef video_…

[MDM 2024]Spatial-Temporal Large Language Model for Traffic Prediction

论文网址&#xff1a;[2401.10134] Spatial-Temporal Large Language Model for Traffic Prediction 论文代码&#xff1a;GitHub - ChenxiLiu-HNU/ST-LLM: Official implementation of the paper "Spatial-Temporal Large Language Model for Traffic Prediction" …

k2路由器登录校园网

教程1刷入Breed&#xff0c;并手动刷入Padavan固件&#xff1a;斐讯K1、K2、K2P 刷机、刷入Breed 辅助工具 | tb (tbvv.net) Padavan下载网址&#xff1a; 我用的是&#xff1a; Padavan 登录的网址是 192.168.123.1 Padavan配置教程&#xff1a; 先用网线连上校园网&#…

多源 BFS 算法详解:从原理到实现,高效解决多源最短路问题

多源 BFS 是一种解决 边权为 1 的多源最短路问题 的高效算法。其核心思想是将所有源点视为一个“超级源点”&#xff0c;通过一次 BFS 遍历即可计算所有节点到最近源点的最短距离。以下从原理、实现和代码示例三个方面深入讲解&#xff1a; 目录 一、原理分析 1. 单源 BFS vs…

C++,设计模式,【工厂方法模式】

文章目录 如何用汽车生产线理解工厂方法模式?一、传统生产方式的困境二、工厂方法模式解决方案三、模式应用场景四、模式优势分析五、现实应用启示✅C++,设计模式,【目录篇】 如何用汽车生产线理解工厂方法模式? 某个早晨,某车企CEO看着会议室里堆积如面的新车订单皱起眉…

贪心算法

int a[1000], b5, c8; swap(b, c); // 交换操作 memset(a, 0, sizeof(a)); // 初始化为0或-1 引导问题 为一个小老鼠准备了M磅的猫粮&#xff0c;准备去和看守仓库的猫做交易&#xff0c;因为仓库里有小老鼠喜欢吃的五香豆&#xff0c;第i个房间有J[i] 磅的五香豆&#xf…

大厂出品!三个新的 DeepSeek 平替网站

前几天给大家分享了几个 DeepSeek 免费平替网站&#xff0c;今天又来更新啦。 新增了以下三个平台&#xff1a;火山引擎、知乎直达、百度搜索。 经过实际测试&#xff0c;这几个平台的服务响应速度快&#xff0c;稳定性表现优异&#xff0c;基本不会出现宕机或服务器繁忙的情…

《深度学习实战》第1集:深度学习基础回顾与框架选择

本专栏系列博文旨在帮助读者从深度学习的基础知识逐步进阶到前沿技术&#xff0c;涵盖理论、实战和行业应用。每集聚焦一个核心知识点&#xff0c;并结合实际项目进行实践&#xff0c;避免空谈理论&#xff0c;简洁明快&#xff0c;快速切入代码&#xff0c;所有代码都经过验证…

经典复古嘻哈说唱朋克风格专辑海报标题设计psai英文字体安装包 Punk Of Sad — Ransom Font

Punk Of Sad 将确保您忘记所有简洁的线条和企业润色。这种经典的赎金风格字体是一封写给 DIY 文化的情书&#xff0c;诞生于杂志、演出海报和地下场景的原始能量的剪切和粘贴混乱。每个字母都是不可预测的&#xff0c;都带有叛逆的边缘。 这种字体有三种不同的样式 – Regular…

hot100-滑动窗口

3. 无重复字符的最长子串 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串的长度。 思路&#xff1a;双指针指向不含重复字符的连续字串的头和尾&#xff0c;用集合存储子串中的元素&#xff0c;有重复时&#xff0c;左指针持续右移&#xff0c;无重复后…

MariaDB 历史版本下载地址 —— 筑梦之路

MariaDB 官方yum源里面只有目前在维护的版本&#xff0c;而有时候对于老项目来说还是需要老版本的rpm包&#xff0c;国内很多镜像站都是同步的官方仓库&#xff0c;因此下载老版本也不好找&#xff0c;这里主要记录下从哪里可以下载到历史版本的MariaDB rpm包。 1. 官方归档网…

Linux-Ansible模块进阶

文章目录 Copy和FetchFile模块 Copy和Fetch copy和fetch模块实践 copy模块需要注意的点&#xff1a;在收集日志之前需要对文件先进行改名或者备份fetch模块需要注意的点&#xff1a;复制的源文件的路径必须是文件不能是目录建议全部使用绝对路径&#xff0c;别使用相对路径确保…

网络空间安全(1)web应用程序的发展历程

前言 Web应用程序的发展历程是一部技术创新与社会变革交织的长卷&#xff0c;从简单的文档共享系统到如今复杂、交互式、数据驱动的平台&#xff0c;经历了多个重要阶段。 一、起源与初期发展&#xff08;1989-1995年&#xff09; Web的诞生&#xff1a; 1989年&#xff0c;欧洲…

国产开源PDF解析工具MinerU

前言 PDF的数据解析是一件较困难的事情&#xff0c;几乎所有商家都把PDF转WORD功能做成付费产品。 PDF是基于PostScript子集渲染的&#xff0c;PostScript是一门图灵完备的语言。而WORD需要的渲染&#xff0c;本质上是PDF能力的子集。大模型领域&#xff0c;我们的目标文件格…

Powershell Install deepseek

前言 deepseekAI助手。它具有聊天机器人功能&#xff0c;可以与用户进行自然语言交互&#xff0c;回答问题、提供建议和帮助解决问题。DeepSeek 的特点包括&#xff1a; 强大的语言理解能力&#xff1a;能够理解和生成自然语言&#xff0c;与用户进行流畅的对话。多领域知识&…