LeetCode - 92. Reverse Linked List II
来源:互联网 发布:软件测试英文面试 编辑:程序博客网 时间:2024/05/10 21:18
这道题目的要求是reverse Linked List中间的某一段,所以自然而然地想到将Linked List看作三部分,第一部分和第三部分不动,只是反转第二部分。另外,由于Linked List的头节点可能发生变化,所以要用到dummyNode这一技巧。Rerverse Linked List这一方法在前面的题目中已经看到过,这里不再重复,其实这道题目并没有很难的地方,只是各种指针的来回比较麻烦,也容易出错,所以这种题目要更加加以重视,它考察了一些知识点和技巧的综合,而且又有一些复杂,要多看几遍。时间复杂度O(n),代码如下:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { public ListNode reverseBetween(ListNode head, int m, int n) { if(head == null || m >= n) return head; // Set dummyNode ListNode dummyNode = new ListNode(0); dummyNode.next = head; head = dummyNode; ListNode nodeBeforeM; ListNode nodeAtM; ListNode nodeAtN; ListNode nodeAfterN; // Find ListNode at position m - 1 and m for(int i = 0; i < m - 1; i++){ if(head == null) return null; head = head.next; } nodeBeforeM = head; nodeAtM = head.next; nodeAtN = nodeAtM; nodeAfterN = nodeAtM.next; // Reverse Linked List from m to n for(int i = m; i < n; i++){ if(nodeAfterN == null) return null; ListNode next = nodeAfterN.next; nodeAfterN.next = nodeAtN; nodeAtN = nodeAfterN; nodeAfterN = next; } // Set poitners at both sides nodeAtM.next = nodeAfterN; nodeBeforeM.next = nodeAtN; return dummyNode.next; }}
知识点:
1. 在Linked List和Tree结构中,如果头节点或者root可能会发生改变,需要使用dummyNode
0 0
- [LeetCode]206. Reverse Linked List&92. Reverse Linked List II
- LeetCode 206. Reverse Linked List && 92. Reverse Linked List II
- 92. Reverse Linked List II leetcode list
- [LeetCode]92.Reverse Linked List II
- LeetCode 92. Reverse Linked List II
- [Leetcode] 92. Reverse Linked List II
- LeetCode --- 92. Reverse Linked List II
- [leetcode] 92.Reverse Linked List II
- [leetcode] 92. Reverse Linked List II
- 92. Reverse Linked List II LeetCode
- leetcode 92. Reverse Linked List II
- Leetcode 92. Reverse Linked List II
- LeetCode 92. Reverse Linked List II
- [LeetCode] 92. Reverse Linked List II
- LeetCode *** 92. Reverse Linked List II
- Leetcode 92. Reverse Linked List II
- [Leetcode] 92. Reverse Linked List II
- 【LeetCode】92. Reverse Linked List II
- 漫话中国古代史 —— 清朝
- linux网络编程,将服务器端时间通过tcp传送到客户端
- Lua实现的栈、队列
- 链表分割
- PowerDesigner逆向工程生成PDM模型及数据库
- LeetCode - 92. Reverse Linked List II
- FragmentTabHost 的使用+一个上架项目源码+一个UI项目源码
- jqurey dom 事件问题
- extern int a 和int a的区别
- Matlab C代码生成 2
- python 制作缩略图
- leetcode 371. Sum of Two Integers
- taglib指令中出错的解决办法
- HDOJ 2046 骨牌铺方格