LeetCode-206&92.Reverse Linked List
来源:互联网 发布:程序员的线性代数 知乎 编辑:程序博客网 时间:2024/04/30 06:10
206 https://leetcode.com/problems/reverse-linked-list/
Reverse a singly linked list.
/** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNode next; * public ListNode(int x) { val = x; } * } */public class Solution{ public ListNode ReverseList(ListNode head) { if (head == null || head.next == null) return head; ListNode pre=null, next; while (head != null) { next = head.next; head.next = pre; pre = head; head = next; } return pre; }}递归
public ListNode ReverseList(ListNode head) { if (head == null || head.next == null) return head; ListNode next = head.next; head.next = null; ListNode node = ReverseList(next); next.next = head; return node; }
92 https://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.
/**
* Definition for singly-linked list.
* public class ListNode {
* public int val;
* public ListNode next;
* public ListNode(int x) { val = x; }
* }
*/
使用栈:(低效)
public ListNode ReverseBetween(ListNode head, int m, int n) { if(head.next==null||m==n) return head; ListNode pre = new ListNode(0); pre.next = head; ListNode curNode = pre; Stack<ListNode> stack = new Stack<ListNode>(); for (int i = 0; i < m; i++) { curNode = curNode.next; } for (int i = m; i <= n; i++) { stack.Push(curNode); curNode = curNode.next; } ListNode leftNode = curNode; curNode = pre; for (int i = 0; i < m - 1; i++) { curNode = curNode.next; } while (stack.Count!=0) { curNode.next = stack.Pop(); curNode = curNode.next; } curNode.next = leftNode; return pre.next; }
不用栈
public ListNode ReverseBetween(ListNode head, int m, int n) { if (head.next == null || m == n) return head; ListNode pre = new ListNode(0); pre.next = head; ListNode curNode = pre; for (int i = 0; i < m - 1; i++) { curNode = curNode.next; } ListNode first = curNode.next; ListNode next = first.next; for (int i = m; i < n; i++) { first.next = next.next; next.next = curNode.next; curNode.next = next; next = first.next; } return pre.next; }
0 0
- LeetCode-206&92.Reverse Linked List
- LeetCode 206 - Reverse Linked List
- leetcode 206 Reverse Linked List
- LeetCode 206:Reverse Linked List
- leetcode 206: Reverse Linked List
- Reverse Linked List - LeetCode 206
- LeetCode---(206)Reverse Linked List
- LeetCode 206-Reverse Linked List
- leetcode[206]:Reverse Linked List
- Leetcode[206]-Reverse Linked List
- leetcode-206-Reverse Linked List
- LeetCode 206 Reverse Linked List
- leetcode 206:Reverse Linked List
- leetcode-206 Reverse Linked List
- 206、Reverse Linked List [Leetcode]
- Leetcode #206 Reverse Linked List
- leetcode 206: Reverse Linked List
- [LeetCode 206] Reverse Linked List
- 【Virtual Studio】.NET Framework 安装失败 发生严重错误
- LigerUI真假分页以及过滤查询功能
- 递归查某文件
- 贪心算法专题总结
- 四窗口卖票 实现Runnable
- LeetCode-206&92.Reverse Linked List
- 腾讯2016春季校园实习招聘技术岗初试(一面)问题汇总(CC++后台)
- 【URAL 1873】【超级坑水题】 GOV Chronicles
- 扑克牌顺子
- 老师发作业继承Thread
- MFC编程之创建Ribbon样式的应用程序框架
- 南阳题目71-独木舟上的旅行
- hadoop SecondNamenode
- 延迟加载的理解