反转链表II(根据指定的索引,逆转链表)
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转
思想:首先判断链表是否合法,并且判断输入的m和n是否合法
定义dummyHead结点,让它指向头结点的前驱,再定义cur,让它指向dummyHead,找到m位置的前驱结点,让cur指向它,接下来的操作和链表逆序一样,只不过只进行n-m次。
代码如下:
public ListNode reverseBetween(ListNode head, int m, int n) {
//链表长度
int length = getLength(head);
int t = n - m;
//判断链表是否合法,并且m和n是否合法
if(length<n || m>=n || head == null || head.next == null) return head;
//定义头结点的前驱结点
ListNode dummyHead = new ListNode(-1);
dummyHead.next = head;
//定义临时结点,指向dummyHead
ListNode cur = dummyHead;
//让cur指向m位置结点的前驱结点
while(m>1){
cur = cur.next;
m--;
}
//逆转链表n-m次
ListNode f = cur.next;
ListNode s = f.next;
while(s!=null && t>0){
f.next = s.next;
s.next = cur.next;
cur.next = s;
s = f.next;
t--;
}
//返回
return dummyHead.next;
}
//求链表长度
public static int getLength(ListNode head){
int count = 0;
while(head!=null){
head = head.next;
count++;
}
return count;
}
反转链表II(根据指定的索引,逆转链表)的更多相关文章
- 【算法训练营day4】LeetCode24. 两两交换链表中的结点 LeetCode19. 删除链表的倒数第N个结点 LeetCode面试题 02.07. 链表相交 LeetCode142. 环形链表II
[算法训练营day4]LeetCode24. 两两交换链表中的结点 LeetCode19. 删除链表的倒数第N个结点 LeetCode面试题 02.07. 链表相交 LeetCode142. 环形链表 ...
- 【1】【leetcode-92】 反转链表 II
(没过,以为简单,结构链表指针搞得很复杂出错.是有捷径的,很典型题目要记住) 反转链表 II(medium) 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明:1 ≤ m ≤ n ≤ 链 ...
- LeetCode 92. 反转链表 II(Reverse Linked List II)
92. 反转链表 II 92. Reverse Linked List II 题目描述 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. LeetC ...
- Java实现 LeetCode 92 反转链表 II
92. 反转链表 II 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5-> ...
- 力扣 - 92. 反转链表II
目录 题目 思路1(迭代) 代码 复杂度分析 思路2(递归) 代码 复杂度分析 题目 92. 反转链表 II 思路1(迭代) 将反转链表分成3个部分:前一段未反转的部分.待反转链表部分.后一段未反转部 ...
- 【python】Leetcode每日一题-反转链表 II
[python]Leetcode每日一题-反转链表 II [题目描述] 给你单链表的头节点 head 和两个整数 left 和 right ,其中 left <= right .请你反转从位置 ...
- 92.反转链表II
题目 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right .请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 . ...
- leetcode 206. 反转链表 及 92. 反转链表 II
206. 反转链表 问题描述 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1-> ...
- [LeetCode] 92. 反转链表 II
题目链接 : https://leetcode-cn.com/problems/reverse-linked-list-ii/ 题目描述: 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说 ...
随机推荐
- [HackerRank]New Year Chaos[UNDONE]
Input (stdin)Download 2 8 5 1 2 3 7 8 6 4 8 1 2 5 3 7 8 6 4 Your Output (stdout) Too chaotic Too cha ...
- Django 中使用kindeditor
KindEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本 ...
- JS输入框统计文字数量
$('#articleTitle').bind('input propertychange',function () { var a = $(this).val().length; if(a>3 ...
- crm 动态一级二级菜单
之前代码菜单是写是的 如何 让他 动态 生成了 首先 添加 2个字段 admin.py 更改 显示 from django.contrib import admin from rbac import ...
- 巧用border制作箭头
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 第十五节:HttpContext五大核心对象的使用(Request、Response、Application、Server、Session)
一. 基本认识 1. 简介:HttpContext用于保持单个用户.单个请求的数据,并且数据只在该请求期间保持: 也可以用于保持需要在不同的HttpModules和HttpHandlers之间传递的值 ...
- spring整合junit
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test& ...
- pc端,移动端css重置样式
pc: html{font-family:"Microsoft YaHei UI","Microsoft YaHei",sans-serif;-ms-text- ...
- 2017-2018-2 20155303『网络对抗技术』Exp6:信息收集与漏洞扫描
2017-2018-2 20155303『网络对抗技术』 Exp6:信息收集与漏洞扫描 --------CONTENTS-------- 一.原理与实践说明 1.实践内容 2.基础问题 二.实践过程记 ...
- python加密
""#line:4 __all__ =[]#line:6 class OO0O0O000O0O0O000 :#line:8 ""#line:9 def __in ...