`
huntfor
  • 浏览: 205360 次
  • 性别: 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语言-leetcode题解之0092-reverse-linked-list-ii.zip”中,我们可以通过解压缩得到文件“0092_reverse_linked_list_ii”。这个文件很可能是C语言编写的代码文件,包含了实现“反转链表II”题目的算法逻辑...

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

    JavaScript解题之92号问题:反转链表II 在JavaScript中,反转链表是一个...最终,通过上述步骤,我们可以得到一个完整的js-leetcode题解之92-reverse-linked-list-ii.js的代码实现,成功地对链表的一部分进行了反转。

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

    Java LeetCode题解之206-Reverse-Linked-List是指在Java编程语言中对LeetCode上的第206号题目“反转链表”进行解答的过程。这是一个经典的算法与数据结构问题,通常作为算法入门的练习题,用于练习对链表这种数据...

    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盒子嵌套-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 ...

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

    在编程领域,特别是在使用Python语言解决算法问题时,LeetCode平台提供了一个非常宝贵的资源。今天我们要探讨的是如何使用Python来解决LeetCode上的一个经典题目——206号问题,即反转一个单链表。该问题在数据结构...

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

    C++中反转单链表是程序员在使用leetcode进行数据结构和算法训练时经常会遇到的一个经典问题。题目的主要任务是改变链表中节点的指向,使得链表从头到尾的顺序变为从尾到头。在C++中,链表节点通常通过结构体或类来...

    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中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 双...

    Leetcode 反转链表.js

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

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

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