两两交换链表中的节点
时间:2022-07-28
本文章向大家介绍两两交换链表中的节点,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例
输入:head = [1,2,3,4]
输出:[2,1,4,3]
输入:head = []
输出:[]
输入:head = [1]
输出:[1]
题解
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var swapPairs = function(head) {
var headNode = new ListNode(null, head);
var pre = headNode;
var cur = head;
while(cur && cur.next){
let curTmp = cur;
let nextTmp = cur.next;
curTmp.next = nextTmp.next;
pre.next = nextTmp;
nextTmp.next = curTmp;
pre = curTmp;
cur = curTmp.next;
}
return headNode.next;
};
思路
通过迭代的方式实现两两交换链表中的节点,直接遍历整个链表即可,首先定义一个空的头结点,之后定义前置节点与当前正需要处理的节点,当正在处理的节点存在以及当前节点的下一个节点都存在时进行循环,将当前节点与当前节点的下一个节点进行缓存,之后将curNode
节点的next
赋值为nextNode
节点的next
,即首先将该节点的下一个节点指向nextNode
的下一个节点,之后将preNode
的next
赋值为nextNode
,将nextNode
的next
赋值为curNode
,最后将preNode
赋值为curNode
,curNode
赋值为curNode
的next
,注意此时的curNode
其实已经被交换换成了,是两个节点中的后一个节点,最后等待循环完成后返回头结点的next
即可。
每日一题
https://github.com/WindrunnerMax/EveryDay
参考
https://leetcode-cn.com/problems/swap-nodes-in-pairs/
- jQuery方法position()与offset()区别
- 温故而知新:设计模式之桥接模式(Bridge)
- 温故而知新:设计模式之装饰模式(Decorator)
- 域名“宝贝”baby.cn以71万元价格结拍
- 温故而知新:设计模式之组合模式(Composite)
- ruby学习笔记(7)-闭包
- ruby学习笔记(6)-Array的使用
- centos7下部署iptables环境纪录(关闭默认的firewalle)
- ruby学习笔记(5)-模块module的运用
- linux系统root密码遗忘的情况下的解决办法
- ruby学习笔记(4)-动态修改类的属性
- 如果技术是一种生命
- ruby学习笔记(2)--类的基本使用
- 域名资讯:四声域名BHHS.com被BHHS公司收购
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 神经网络之反向传播
- 通俗理解n-gram语言模型
- 数值积分|第二类反常积分
- python 字典一些常见的魔法方法以及遇到的面试题
- 【程序源代码】python贪吃蛇小游戏
- html5+CSS3+JS实现七夕言情功能代码
- 利用 Python 爬取了近 3000 条单身女生的数据,究竟她们理想的择偶标准是什么?
- 用了这么多年的注解,你知道注解是干嘛的嘛?
- 缓存及在 Python 中使用缓存
- 【xss-labs】xss-labs通关笔记(一)
- 在 jQuery Mobile 中使用 UI 组件
- 【内网渗透】关于内网代理转发技术
- 知识图谱项目前端可视化图论库——Cytoscape.js简介
- Matlab系列之文件操作
- 云开发 X 涂鸦:当小程序遇见物联网IoT,几行代码搞定智能插座控制