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);
	}
}
相关推荐
Nil2082 分钟前
leetcode 24两两交换链表中的节点
算法·leetcode·链表
带多刺的玫瑰2 小时前
Leecode#4刷题之寻找两个正序数组的中位数
java·前端·算法
土司大王2 小时前
LeetCode hot100——除了自身以外数组的乘积
数据结构·算法·leetcode
阿无,2 小时前
布隆过滤器
java·算法·哈希算法
Pocker_Spades_A2 小时前
飞算JavaAI 48分钟能做完Java全栈项目吗?
java·springboot·#ai编程·#飞算javaai·#java代码生成·#aicoding模型·#java开发
步行cgn3 小时前
MyBatis 一对多关联映射详解
java·后端
用户3126874877203 小时前
线程池到底怎么调?从源码看懂 ThreadPoolExecutor 的 7 个参数
java
SQL-First布道者3 小时前
持久层框架的评价标准:只有一个
java·spring boot·spring·tomcat·mybatis·spring jdbc
孔明click333 小时前
Sa-Token v1.46.0 发布 🚀,来看看有没有令你心动的功能!
java·sa-token·开源·springboot·权限认证
黄敬峰3 小时前
一文讲透 JWT 登录鉴权:token 的「颁发 → 存储 → 携带 → 校验」完整闭环
面试