24. Swap Nodes in Pairs

本文介绍了一种在常量空间复杂度下交换链表中每对相邻节点的算法。通过增设头节点并调整节点间的连接来实现节点交换,而不直接交换元素值。此外,还提供了一种直接交换元素的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给你一个链表,交换每两个相邻的节点,并返回它的头部。

你的算法需要使用常量的空间,不可以交换链表中的元素,只有节点本身可以被改变。

1. 增设头节点,用来指向每次交换完两个指针后断开的链。

	public ListNode swapPairs(ListNode head)
	{
		ListNode header = new ListNode(0); // 增设新链表的头结点
		header.next = head; // 头指针指向第一个节点
		ListNode p = head;  // 指向第一个节点
		ListNode q, t;
		
		// 链表为空或链表只有一个元素时
		if (head == null || head.next == null)
		{
			return header.next;
		}
		
		t = header;
		while (p != null)
		{
			// 改变前两个节点的指针指向
			q = p.next;
			if (q != null)
			{
				p.next = q.next;
				q.next = p;
				// 使头指针指向新的首源节点
				t.next = q;
				t = p;
			}
			p = p.next;
		}
		return header.next;
	}

如果允许交换元素的话,还可以这样做。

public ListNode swapPairs(ListNode head)
	{
		ListNode p = head;
		ListNode q = null;
		int tmp = 0;
		// 如果链表为空
		if (head == null || head.next == null)
		{
			return head;
		}
			
		while (p.next != null)
		{
			q = p.next;
			// 交互相邻节点的值
			tmp = p.val;
			p.val = q.val;
			q.val = tmp;
			// 移动到下下一个位置
			if (q.next == null)
				break;
			p = q.next; 
		}
		
		return head;
	}

<think>1. 刷新后数据呈现不完整(有空格)的问题:可能是在加载数据时对空字符串处理不当,导致输入框中显示空格。需要检查加载数据时是否对空字符串进行了过滤。 2. 删除按钮功能失效:需要检查删除按钮绑定的函数是否正确定义,以及是否对输入框进行了清空操作。 3. 文件路径问题:在保存和读取文件时,路径使用`GlobalConfig.MODULE1_SAVE_PATH`,但需要确认该路径是否指向`c:\users\administrator\desktop<|begin▁of▁sentence|># 第 1 节:使用 React 和 TypeScript 设置我们的项目 在第一节中,我们将使用 React 和 TypeScript 设置我们的项目。我们使用 Create React App 来搭建我们的项目。Create React App 支持开箱即用的 TypeScript,因此设置过程非常顺利。 ## 创建项目 首先,使用 Create React App 创建一个新的 TypeScript 项目: ```bash npx create-react-app my-app --template typescript ``` 这将在名为 `my-app` 的文件夹中创建一个新的 React 项目,并配置为使用 TypeScript。 ## 安装依赖项 我们将使用以下依赖项: - `react-query`:用于数据获取和状态<|begin▁of▁sentence|># [24. Swap Nodes in Pairs](https://leetcode.com/problems/swap-nodes-in-pairs) ## Description Given a linked list, swap every two adjacent nodes and return its head. Example: ``` Given 1->2->3->4,<|begin▁of▁sentence|># 3.4.2. 使用虚拟表 在数据库设计中,虚拟表(也称为视图)是一种逻辑表<|begin▁of▁sentence|>--- layout: default title: '动漫《卡片战斗先导者G 超越之章》下载资源/在线播放/视频地址/1080p/高清/蓝光' date: "2021-07-10T14:40:12+0800" last_modified_at: "<|begin▁of▁sentence|># 1.0.0 (2022-04-20) ### Features - **init:** init ([d7b7b4d](https://github.com/NewFuture/md2book/commit/d7b7b4d))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值