[Leetcode] #92#206 Reverse Linked List I & II
2017-02-12 09:05
387 查看
Discription:
Reverse a singly linked list.Solution:
ListNode* reverseList(ListNode* head) { ListNode *pre = NULL, *cur = head; while (cur){ ListNode *temp = cur->next; cur->next = pre; pre = cur; cur = temp; } return pre; }
ListNode* reverseList(ListNode* head) { if (head == NULL) return NULL; ListNode *pNext, *pPre = NULL; while (head->next){ pNext = head->next; head->next = pPre; pPre = head; head = pNext; } head->next = pPre; return head; }
ListNode* reverseList(ListNode* head) { if (!head || !(head->next)) return head; ListNode* node = reverseList(head->next); head->next->next = head; head->next = NULL; return node; }
Discription:
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.
Solution:
ListNode* reverseBetween(ListNode* head, int m, int n) { ListNode *pre = new ListNode(-1); pre->next = head; head = pre; ListNode *p1 = head, *p2 = head; while (m != 0 && p1->next != NULL){ pre = p1; p1 = p1->next; m--; } while (n != 0 && p2->next != NULL){ p2 = p2->next; n--; } ListNode *pPre = p2->next; while (p1 != p2){ ListNode *pNext = p1->next; p1->next = pPre; pPre = p1; p1 = pNext; } p2->next = pPre; pre->next = p2; return head->next; }
ListNode* reverseBetween(ListNode* head, int m, int n) { ListNode* new_head = new ListNode(0); new_head->next = head; ListNode* pre = new_head; for (int i = 0; i < m - 1; i++) pre = pre->next; ListNode* cur = pre->next; for (int i = 0; i < n - m; i++) { ListNode* move = cur->next; cur->next = move->next; move->next = pre->next; pre->next = move; } return new_head->next; }
GitHub-LeetCode: https://github.com/wenwu313/LeetCode
相关文章推荐
- 【Leetcode】92. Reverse Linked List II && 206. Reverse Linked List
- leetcode 25. Reverse Nodes in k-Group & leetcode 92. Reverse Linked List II
- LeetCode解题报告—— Linked List Cycle II & Reverse Words in a String & Fraction to Recurring Decimal
- LeetCode 206. Reverse Linked List && 92. Reverse Linked List II
- [LeetCode]206. Reverse Linked List&92. Reverse Linked List II
- LeetCode之“链表”:Reverse Linked List && Reverse Linked List II
- LeetCode解题报告—— Reverse Linked List II & Restore IP Addresses & Unique Binary Search Trees II
- 【leetcode】Reverse Linked List I & II
- leetcode--Reverse Linked List II
- [LeetCode]Reverse Linked List II
- leetcode 76: Reverse Linked List II
- leetcode 41: Reverse Linked List II
- LeetCode-Reverse Linked List II
- Leetcode: Reverse Linked List II
- LeetCode_Reverse Linked List II
- [leetcode]Reverse Linked List II
- LeetCode: Reverse Linked List II
- leetcode Reverse Linked List II
- [Leetcode]Reverse Linked List II
- [LeetCode] Reverse Linked List II