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);
	}
}
相关推荐
longlongzihan2 分钟前
LeetCode 56合并区间:排序与贪心
c++·算法·leetcode
imDwAaY3 分钟前
Bean的生命周期
java·笔记·后端·学习·spring·dubbo
不停喝水4 分钟前
【前端转全栈java速通课】 项目实战④-1 Spring Boot 创建项目-定义接口-请求参数处理-分层规范-依赖注入
java·前端·spring boot
顶点多余7 分钟前
9.24 面试复盘
面试·职场和发展
上下求索,莫负韶华12 分钟前
Spring全家桶
java·后端·spring
炎龙铠甲会合体21 分钟前
AXI2ICACHE— AXI4-Full 四路组相联指令 Cache 设计与 UVM 验证
fpga开发·面试·芯片验证
w_zero_one24 分钟前
链表(2)
java·数据结构·链表
白杨尚青31 分钟前
C++入门篇(十一):string(中)——容量与增删改查:一篇吃透所有常用接口(万字详解)
java·开发语言·c++
kukubuzai41 分钟前
二分查找系列一
数据结构·算法·leetcode
SimonKing42 分钟前
SSE、WebSocket 连接丢 Redis 里?那可踩大坑了!
java·后端·程序员