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.
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; }
相关推荐
进行一次遍历,把第m到n个元素进行翻转,即依次插入到第m个节点的头部。这个题还是有意思的。建议后面再多做几遍。Python代码如下:self.next = No
c语言基础 c语言_leetcode题解之0092_reverse_linked_list_ii.zip
javascript js_leetcode题解之92-reverse-linked-list-ii.js
java入门 java_leetcode题解之206_Reverse_Linked_List
python python_leetcode题解之206_Reverse_Linked_List.py
c++ C++_leetcode题解之206_Reverse_Linked_List.cpp
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 ...
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
* [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 Solutions in Java Linked List Linked List ...linked list, ...快慢指针法,块指针从head.next开始,慢指针从head开始,快指针每次移动两格,慢...reverseList(ListNode head) 三个指针,依次往后
Linked List Cycle II**:找到链表环的长度,并给出进入环的第一个节点。 4. **解决链表问题的策略** - **迭代法**:使用循环遍历链表,通常适用于大多数链表操作。 - **递归法**:对于某些特定问题,如链表反转...
def reorderList(self, head: ListNode) -> None: if not head or not head.next: return # 找到链表中点 mid = self.findMid(head) # 反转后半部分链表 l2 = mid.next mid.next = None l2 = self....
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版本
leetcode 2 sum c LeetCode 帮助文档 帮助文档存放在Help文件夹下。 文件名 文件描述 ...complexitypython.txt Python的一些常规操作的复杂度统计 ...Reverse Linked List 234 Easy Palindrome Linked List
- **Reverse Linked List**:反转链表。 - **Swap Nodes in Pairs**:交换链表中的相邻节点。 - **Sort List**:对链表进行排序。 - **Rotate List**:将链表顺时针旋转指定次数。 - **Reorder List**:按照...
LeetCode 206的题目是“反转链表”(Reverse Linked List),它要求将一个单链表的所有节点反转,并返回反转后链表的头节点。这是一个基础但非常重要的链表操作问题,它不仅考察了对链表数据结构的理解,还涉及到了...
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 双...
终生成长 :hot_beverage: 为什么要建这个仓库 梳理自己掌握的知识点,整理自己的知识体系。... Reverse Linked ListLeetcode 141. Linked List CycleLeetcode 21. Merge Two Sorted ListsLeetCode 224. Basic Cal
第92题“反转链表II”(Reverse Linked List II)要求对链表的一部分进行反转。具体来说,给定一个链表的头节点`head`、一个整数`m`和一个整数`n`,你需要反转从位置`m`到位置`n`的链表部分,其中位置`1`为链表的...
25. **Reverse Linked List**:反转链表。递归或迭代方法都可以实现。 26. **Binary Tree Paths**:找到二叉树的所有根到叶子的路径。使用DFS,记录路径并返回。 27. **Remove Linked List Elements**:移除链表中...