`
huntfor
  • 浏览: 201354 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[leetcode]Reverse Linked List II

 
阅读更多
http://oj.leetcode.com/problems/reverse-linked-list-ii/
Reverse a linked list from position m to n. Do it in-place and in one-pass.

For example:
Given 1->2->3->4->5->NULL, m = 2 and n = 4,

return 1->4->3->2->5->NULL.

Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.

 在剑指offer中看到过反转链表,里面讲的思想稍稍复杂一点,是在原链表中进行反转操作,但是我拿到这道题的第一印象就是用头插法生成新的链表,并将新建链表查到原来链表的相应位置中。思想很简单明了,但是代码略长。

public ListNode reverseBetween(ListNode head, int m, int n) {
    	if(m == n || head == null){
    		return head;
    	}
    	//------ 手动添加头结点,为了操作统一性
    	ListNode phead = new ListNode(0);
    	phead.next = head;
    	ListNode tem = phead;
    	
    	int count = 0;
    	//需要记录m ,n前后的两个节点,方便新链表的插入
    	ListNode newList = new ListNode(0);
    	ListNode mPreNode = null;
    	ListNode nPreNode = null;
    	ListNode tail = null;
    	
    	while(tem != null) {
    		if(count == m - 1){
    			if(m == 1){
					mPreNode = phead;
    			}else{
    				mPreNode = tem;
    			}
    		}else if (count == n + 1){
    			nPreNode = tem;
    		}else if(count <= n && count >= m){
                        //头插法建表
    			ListNode node = new ListNode(tem.val);
    			node.next = newList.next;
    			newList.next = node;
    			if(count == m){
    				tail = node;
    			}
    		}
    		count++;
    		tem = tem.next;
    	}
    	mPreNode.next = newList.next;
    	tail.next = nPreNode;
    	return phead.next;
    }

 

分享到:
评论

相关推荐

    fuxuemingzhu#Leetcode-Solution-All#92. Reverse Linked List II 反转

    进行一次遍历,把第m到n个元素进行翻转,即依次插入到第m个节点的头部。这个题还是有意思的。建议后面再多做几遍。Python代码如下:self.next = No

    c语言-leetcode题解之0092-reverse-linked-list-ii.zip

    c语言基础 c语言_leetcode题解之0092_reverse_linked_list_ii.zip

    js-leetcode题解之92-reverse-linked-list-ii.js

    javascript js_leetcode题解之92-reverse-linked-list-ii.js

    java-leetcode题解之206-Reverse-Linked-List

    java入门 java_leetcode题解之206_Reverse_Linked_List

    python-leetcode题解之206-Reverse-Linked-List.py

    python python_leetcode题解之206_Reverse_Linked_List.py

    C++-leetcode题解之206-Reverse-Linked-List.cpp

    c++ C++_leetcode题解之206_Reverse_Linked_List.cpp

    leetcode盒子嵌套-leetcode-text:leetcode-文本

    leetcode盒子嵌套 leetcode-text 92.Reverse Linked List II Runtime: 4 ms, faster than 67.04% of C online submissions for Reverse Linked List II. Memory Usage: 6.9 MB, less than 100.00% of C online ...

    leetcode中文版-LeetCode:力码

    92.Reverse Linked List II LeetCode 138.Copy List with Random Pointer LeetCode 142.Linked List Cycle II(solve1) LeetCode 142.Linked List Cycle II(solve2) LeetCode 160.Intersection of Two Linke

    LeetCode最全代码

    * [Linked List](https://github.com/kamyu104/LeetCode#linked-list) * [Stack](https://github.com/kamyu104/LeetCode#stack) * [Queue](https://github.com/kamyu104/LeetCode#queue) * [Heap]...

    leetcode不会-Leetcode-Java:Leetcode-Java

    leetcode 不会 Leetcode Solutions in Java Linked List Linked List ...linked list, ...快慢指针法,块指针从head.next开始,慢指针从head开始,快指针每次移动两格,慢...reverseList(ListNode head) 三个指针,依次往后

    leetcode-链表笔记

    Linked List Cycle II**:找到链表环的长度,并给出进入环的第一个节点。 4. **解决链表问题的策略** - **迭代法**:使用循环遍历链表,通常适用于大多数链表操作。 - **递归法**:对于某些特定问题,如链表反转...

    python 教程 leetcode 代码模板-.Linked-List-Two-Pointers-List.md

    def reorderList(self, head: ListNode) -&gt; None: if not head or not head.next: return # 找到链表中点 mid = self.findMid(head) # 反转后半部分链表 l2 = mid.next mid.next = None l2 = self....

    LeetCode2 Add Two Numbers

    You are given two non-empty linked lists ... Add the two numbers and return it as a linked list. You may assume the two numbers do not contain any leading zero, except the number 0 itself. java AC版本

    leetcode2sumc-LeetCode:LeetCode的一些题目

    leetcode 2 sum c LeetCode 帮助文档 帮助文档存放在Help文件夹下。 文件名 文件描述 ...complexitypython.txt Python的一些常规操作的复杂度统计 ...Reverse Linked List 234 Easy Palindrome Linked List

    Leetcode题目+解析+思路+答案.pdf

    - **Reverse Linked List**:反转链表。 - **Swap Nodes in Pairs**:交换链表中的相邻节点。 - **Sort List**:对链表进行排序。 - **Rotate List**:将链表顺时针旋转指定次数。 - **Reorder List**:按照...

    Leetcode 反转链表.js

    LeetCode 206的题目是“反转链表”(Reverse Linked List),它要求将一个单链表的所有节点反转,并返回反转后链表的头节点。这是一个基础但非常重要的链表操作问题,它不仅考察了对链表数据结构的理解,还涉及到了...

    leetcode中325题python-leetcode:leetcode

    reverse-linked-list-ii(Reverse a Sub-list) 141 环形链表 linked-list-cycle 142 环形链表 II linked-list-cycle-ii 143 重排链表 reorder-list 148 排序链表 sort-list 234 回文链表 palindrome-linked-list 双...

    tech.github.io:我的博客

    终生成长 :hot_beverage: 为什么要建这个仓库 梳理自己掌握的知识点,整理自己的知识体系。... Reverse Linked ListLeetcode 141. Linked List CycleLeetcode 21. Merge Two Sorted ListsLeetCode 224. Basic Cal

    java-leetcode题解之第92题反转链表II.zip

    第92题“反转链表II”(Reverse Linked List II)要求对链表的一部分进行反转。具体来说,给定一个链表的头节点`head`、一个整数`m`和一个整数`n`,你需要反转从位置`m`到位置`n`的链表部分,其中位置`1`为链表的...

    Leetcode部分试题解析

    25. **Reverse Linked List**:反转链表。递归或迭代方法都可以实现。 26. **Binary Tree Paths**:找到二叉树的所有根到叶子的路径。使用DFS,记录路径并返回。 27. **Remove Linked List Elements**:移除链表中...

Global site tag (gtag.js) - Google Analytics