【LeetCode】206. Reverse Linked List
2016-03-25 14:15
369 查看
Question:
Reverse a singly linked list.
Hint: A linked list can be reversed either iteratively or recursively.
Could you implement both?
My solution (recursion): 1ms
My solution 2 :Memory Limit Exceeded in LeetCode System, but it can do with eclipse.
Net solution : 0ms,1ms
Excellent !!!
Reverse a singly linked list.
Hint: A linked list can be reversed either iteratively or recursively.
Could you implement both?
My solution (recursion): 1ms
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode reverseList(ListNode head) { if(head == null){ return head; } ListNode newHead = reverse(head,head.next); head.next = null; return newHead; } public ListNode reverse(ListNode src, ListNode next){ if(next == null){ return src; } ListNode newHead = reverse(next,next.next); next.next = src; return newHead; } }
My solution 2 :Memory Limit Exceeded in LeetCode System, but it can do with eclipse.
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode reverseList(ListNode head) { if(head == null){ return head; } LinkedList<ListNode> list = new LinkedList<ListNode>(); list.push(head); while(head.next != null){ list.push(head.next); head = head.next; } head = list.pop(); ListNode tail = head; while(list.size()>0){ tail.next = list.pop(); tail = tail.next; } return head; } }
Net solution : 0ms,1ms
Excellent !!!
// iterative solution public ListNode reverseList(ListNode head) { ListNode newHead = null; while(head != null){ ListNode next = head.next; head.next = newHead; newHead = head; head = next; } return newHead; } // recursive solution public ListNode reverseList(ListNode head) { return reverseListInt(head, null); } public ListNode reverseListInt(ListNode head, ListNode newHead) { if(head == null) return newHead; ListNode next = head.next; head.next = newHead; return reverseListInt(next, head); }
相关文章推荐
- 解析Java中的队列和用LinkedList集合模拟队列的方法
- JAVA LinkedList和ArrayList的使用及性能分析
- 浅谈 java中ArrayList、Vector、LinkedList的区别联系
- LinkedList学习示例模拟堆栈与队列数据结构
- 集合操作(一)ArrayList,LinkedList源码分析
- 关于JDK1.7中LinkedList索引方法的思考
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- 重新认识java-LinkedList
- ArrayList和LinkedList的主要区别
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap