leetcode92-Reverse Linked List II

题目

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。

示例 1:

输入:head = 1,2,3,4,5, left = 2, right = 4

输出:1,4,3,2,5

分析

拿例子来说,我们可以找到left的前序结点pre,链表翻转可以等同于不断的把left后面的结点往pre结点后面进行插入

java 复制代码
public class LinkNode {
	int val;
	LinkNode next;

	public LinkNode(int data) {
		this.val = data;
		this.next = null;
	}
}
public class LinkList {
	LinkNode head;
	public LinkList() {
		this.head = null;
	}
	public LinkNode getHead() {
		return this.head;
	}
	//添加元素
	public void addNode(int data) {
		LinkNode node = new LinkNode(data);
		if (this.head == null) {
			this.head = node;
		} else {
			LinkNode cur = this.head;
			while(cur.next != null) {
				cur = cur.next;
			}
			cur.next = node;
		}
	}
	//正序打印
	public void print(LinkNode node) {
		while(node != null) {
			System.out.print(node.val);
			System.out.print(" ");
			node = node.next;
		}
		System.out.println();
	}
	public void partReverse(int left,int right) {
		LinkNode dummy = new LinkNode(-1);
		dummy.next = this.head;
		LinkNode pre = dummy;
		for(int i = 1;i<left;i++) {
			pre = pre.next;
		}
		int tmp = right - left;
		LinkNode cur = pre.next;
		while(tmp > 0 && pre != null) {
			if(cur != null && cur.next != null) {
				LinkNode p = cur.next;
				cur.next = p.next;
				p.next = pre.next;
				pre.next = p;
			}
			tmp--;
		}
		print(dummy.next);

	}
}
public class reverseLinkedListII {
	public static void main(String[] args) {
		LinkList list = new LinkList();
		list.addNode(1);
		list.addNode(2);
		list.addNode(3);
		list.addNode(4);
		list.addNode(5);
		list.partReverse(2,4);
	}
}
相关推荐
171320330计算机毕设编程几秒前
计算机毕业设计 基于springboot+vue的在线观鸟视频播放网站 LW PPT
java·大数据·vue.js·spring boot·算法·课程设计
IT枫斗者枫哥1 分钟前
JDBC事务实测:操作日志写入失败时,让客户修改一起回滚
java
OxYGC4 分钟前
Spring 面经系列 · 第 1 篇:Bean 生命周期、单例语义、依赖注入与线程安全
java·安全·spring
小物学长17 分钟前
Java 程序员的 IoT 协议入门(一):物联网平台到底在做什么
java
const_qiu19 分钟前
第四章 07:4.7 本章小结
java·运维·服务器·人工智能
鶴哥只手遮天26 分钟前
Spring AI 2.0.1 深度解析-第 22 章 Spring Boot 集成:自动配置、Properties 与条件装配
java·人工智能·开源
WJ.Polar41 分钟前
final、单例类、枚举类、抽象类、接口
java·开发语言
江湖有缘1 小时前
Docker实战 | 使用Docker部署Imagor Studio图片编辑工具
java·docker·eureka
PBitW1 小时前
行内编辑,前端如何兜底?😭😭😭
前端·面试