前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >翻转链表 II

翻转链表 II

作者头像
一份执着✘
发布2018-06-04 16:17:47
7720
发布2018-06-04 16:17:47
举报
文章被收录于专栏:赵俊的Java专栏赵俊的Java专栏

题意

翻转链表中第m个节点到第n个节点的部分

注意事项mn满足 1 ≤ m ≤ n ≤ 链表长度

样例

给出链表 1->2->3->4->5->nullm = 2n = 4,返回 1->4->3->2->5->null

思路

本题类似于 翻转链表,只不过是限定了翻转的个数而已。

可以先记录下 m 节点的前一个节点,与 n 节点的后一个节点,然后将 m - n 进行翻转(参考:翻转链表 ),最后利用 m 的前节点和 n 的后节点,将链表再次链接起来即可。

代码

代码语言:javascript
复制
/**
 * Definition for ListNode
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    /**
     * @param ListNode head is the head of the linked list 
     * @oaram m and n
     * @return: The head of the reversed ListNode
     */
    public ListNode reverseBetween(ListNode head, int m , int n) {
    	//非空判断
    	if (m >= n || head == null) {
	        return head;
	    }
    
	    ListNode dummy = new ListNode(0); // 插入头节点
	    dummy.next = head;
	    head = dummy;
	    
	    for (int i = 1; i < m; i++) { // 找到m节点前面一个节点
	        if (head == null) {
	            return null;
	        }
	        head = head.next;
	    }
	    
	    ListNode premNode = head; // m 之前的那个节点
	    ListNode mNode = premNode.next; // m 节点 
	    
	    ListNode nNode = mNode;// n节点
        ListNode postnNode = mNode.next; // n 之后那个节点 
        
        // n 后节点 插入到n 节点之前 
	    for (int i = m; i < n; i++) {
	        if (postnNode == null) {
	            return null;
	        }
	        ListNode temp = postnNode.next;  // 下一个节点
	        postnNode.next = nNode;
	        nNode = postnNode;
	        postnNode = temp;
	    }
	    
	    mNode.next = postnNode;// m next 指向 n 后
        premNode.next = nNode; // m 前节点 指向 n 

	    
	    return dummy.next;
    }
}

原题地址

LintCode:翻转链表 II

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-07-132,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题意
  • 样例
  • 思路
  • 代码
  • 原题地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档