leetcode Reorder List
来源:互联网 发布:office2011for mac 编辑:程序博客网 时间:2024/05/22 18:55
本题的思路:
1.将原链表从中间分成两个链表A,B。
2.逆置B,此处可根据逆序伐穿件链表来做。
3.然后针对每个元素依次合并A,B。
代码
ListNode* reverseList(ListNode*head){ListNode* p, *headtemp;p = head;headtemp = new ListNode(0);while(p!=NULL){ListNode * q;q = p; p = p->next;q->next = headtemp->next;headtemp->next = q;}return headtemp->next;}ListNode * mergeLists(ListNode *head1, ListNode *head2){ListNode *pnext1, *pnext2, *p, *q;pnext1 = head1;pnext2 = head2;q = new ListNode(0);p = q;while(pnext1!=NULL&&pnext2!=NULL){p ->next = pnext1;pnext1 = pnext1->next;p = p->next;p->next = pnext2;pnext2 = pnext2->next;p = p->next;}if(pnext1!=NULL)p->next = pnext1;if(pnext2!=NULL)p->next = pnext2;return q->next;}ListNode* reorderList(ListNode *head){if(head==NULL)return ;ListNode *fast, *slow, *last;slow = head;fast = head;while(slow->next!=NULL&&fast->next!=NULL&&fast->next->next!=NULL){slow = slow->next;fast = fast->next->next;}ListNode * head2;head2 = slow->next;slow->next = NULL;//反转后半部分链表head2 = reverseList(head2);//合并两个链表head = mergeLists(head, head2);}
0 0
- [leetcode][list] Reorder List
- [leetcode][list] 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
- leetcode Reorder List
- LeetCode | Reorder List
- LeetCode Reorder List
- LeetCode 之 Reorder List
- Leetcode: Reorder List
- LeetCode OJ:Reorder List
- Reorder List (LeetCode)
- MapReduct例子
- Palindromes _easy version回文(2029)
- hdu-oj 2123 An easy problem
- 安卓手机误删照片怎么恢复
- NIOS II 处理器性能测试
- leetcode Reorder List
- oracle物理文件的位置查看
- “传智好读者”赛事火热开启,欢乐闯关赢豪礼 技术大神为你“转身”
- 小波变换与傅里叶变换
- HDU 1754 I Hate It 水线段树
- 基数排序java实现
- Elastix如何监听其它分机(图文)
- CSDN无语+恶心的待审核
- spring下载方法