LeetCode.206. Reverse Linked List(反转有序链表)
2017-06-27 16:27
465 查看
实习面试了三次,两次问道这个题目,有必要整理一下了。
Reverse
a singly linked list.
#方法一:
使用迭代的方法,算法时间复杂度是O(n),
空间复杂度为O(1)
#方法二
使用递归
Reverse
a singly linked list.
#方法一:
使用迭代的方法,算法时间复杂度是O(n),
空间复杂度为O(1)
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* reverseList(ListNode* head) { if(head == NULL || head -> next == NULL) return head; else { ListNode* p = head; ListNode* t = NULL; ListNode* h = NULL; while(p != NULL) { h = p -> next; p -> next = t; t = p; p = h; } head = t; } return head; } };
#方法二
使用递归
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* reverseList(ListNode* head) { if(head == NULL || head -> next == NULL) return head; else { ListNode* newhead = reverseList(head -> next); head -> next -> next = head; head -> next = NULL } } };
相关文章推荐
- LeetCode 206 Reverse Linked List(反转链表)(Linked List)(四步将递归改写成迭代)(*)
- C实现 LeetCode->Reverse Linked List II (双指针大法)(单链表反转)
- [LeetCode-92] Reverse Linked List II(反转指定区间链表)
- 链表的反转问题(Reverse Linked List)
- [LeetCode] Convert Binary Search Tree to Sorted Doubly Linked List 将二叉搜索树转为有序双向链表
- LeetCode206——Reverse Linked List 反转链表
- Leetcode Reverse Linked List II 反转部分单向链表
- 反转单向链表(reverse a singly linked list)
- C实现 LeetCode->Reverse Linked List (双指针大法)(单链表反转)
- 带有首尾的可反转链表(LinkedList)的java实现
- 92. Reverse Linked List II【遍历一遍就反转链表】
- 【LeetCode-面试算法经典-Java实现】【092-Reverse Linked List II(反转单链表II)】
- [LeetCode] Reverse Linked List(递归与非递归反转链表)
- 两两反转单向链表 (reverse a singly linked list in pair ) [#22]
- Reverse Linked List(反转链表)
- 链表-Reverse Linked List(反转单向链表)
- LeetCode OJ:Reverse Linked List II(反转链表II)
- 反转单向链表(reverse a singly linked list)(单个反转) [# 7]
- [LeetCode-206] Reverse Linked List(链表反转)
- leetcode206-Reverse Linked List-反转链表