Reorder List [LeetCode]
2013-11-09 13:54
232 查看
Given a singly linked list L: L0→L1→…→Ln-1→Ln,
reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…
You must do this in-place without altering the nodes' values.
For example,
Given
Solution: make sure the last element points to NULL in the new list;
reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…
You must do this in-place without altering the nodes' values.
For example,
Given
{1,2,3,4}, reorder it to
{1,4,2,3}.
Solution: make sure the last element points to NULL in the new list;
void reorderList(ListNode *head) { vector<ListNode * > nodes; ListNode * current = head; while(current != NULL) { nodes.push_back(current); current = current->next; } for(int i = 0; i < nodes.size() / 2; i ++){ int next = nodes.size() - 1 - i; if(i < next){ ListNode * tmp = nodes[i]->next; nodes[i]->next = nodes[next]; nodes[next]->next = tmp; } } if(nodes.size() > 0) nodes[nodes.size() / 2]->next = NULL; }
void reorderList(ListNode *head) { vector<ListNode * > nodes; ListNode * current = head; while(current != NULL) { nodes.push_back(current); current = current->next; } for(int i = 0; i < nodes.size() / 2; i ++){ if(i < nodes.size() - 1 - i){ nodes[i]->next = nodes[nodes.size() - 1 - i]; if(i + 1 < nodes.size() - 1 - i) nodes[nodes.size() - 1 - i]->next = nodes[i + 1]; else nodes[nodes.size() - 1 - i]->next = NULL; } } if(nodes.size() % 2 == 1) nodes[nodes.size() / 2]->next = NULL; }
相关文章推荐
- leetcode_143_Reorder List
- LeetCode 之 Reorder List
- LeetCode:Reorder List
- 【leetcode每日一题】Reorder List
- [leetcode] Reorder List
- Leetcode Reorder List
- 【Leetcode】【Medium】Reorder List
- Reorder List (leetcode)
- [LeetCode] Reorder List 反向插入链表
- leetcode Reorder List
- LeetCode(143)Reorder List
- Leetcode--Reorder List
- LeetCode | Reorder List
- [LeetCode] - Reorder List
- LeetCode:Reorder List
- LeetCode Reorder List
- LeetCode:Reorder List
- Leetcode -- Reorder List
- [Leetcode]Reorder List
- leetcode题目:Reorder List