LeetCode 143 Reorder List Add to List
来源:互联网 发布:php api接口开发 json 编辑:程序博客网 时间:2024/05/16 16:12
题目:
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 {1,2,3,4}
, reorder it to {1,4,2,3}
.
想法:将后半段倒序后,插入前半段
代码(c):
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */void reorderList(struct ListNode* head) { struct ListNode* mid_head ; struct ListNode* cur_ptr,*pre_ptr; int i,length; mid_head = (struct ListNode *)malloc(sizeof(struct ListNode)); mid_head->val = 0; mid_head->next = NULL; if(head != NULL) { length = 0; cur_ptr = head; while(cur_ptr!=NULL) { length++; cur_ptr = cur_ptr->next; } for(i = 0, pre_ptr = cur_ptr = head; i<length;i++) { if(i>length/2&&cur_ptr!=NULL) { pre_ptr->next = cur_ptr->next; cur_ptr->next = mid_head->next; mid_head->next = cur_ptr; cur_ptr = pre_ptr->next; } else { pre_ptr = cur_ptr; cur_ptr = cur_ptr->next; } } pre_ptr = head; cur_ptr = mid_head->next; while(cur_ptr!=NULL) { mid_head->next = cur_ptr->next; cur_ptr->next = pre_ptr->next; pre_ptr->next = cur_ptr; pre_ptr = cur_ptr->next; cur_ptr = mid_head->next; } }}
Runtime:16ms
0 0
- LeetCode 143 Reorder List Add to List
- LeetCode(143)Reorder List
- LeetCode 143 Reorder List
- LeetCode: Reorder List [143]
- [leetcode 143] Reorder List
- [LeetCode 143]Reorder List
- leetcode || 143、Reorder List
- [leetcode] #143 Reorder List
- Reorder List - LeetCode 143
- Leetcode[143]-Reorder List
- leetcode[143]:Reorder List
- LeetCode 143: Reorder List
- LeetCode(143) Reorder List
- [Leetcode]#143 Reorder List
- 143 Reorder List [Leetcode]
- (Leetcode 143 )Reorder List
- leetcode-Reorder List-143
- Leetcode Reorder List 143
- Codeforces 316D2
- css--基础教程
- c#如何实现时间相加
- 浅谈jQuery实现轮播
- Unicode字符集下CString与char *转换 (解决中文乱码等)
- LeetCode 143 Reorder List Add to List
- cnpm及vue的脚手架工具安装
- void指针
- windows下git的操作
- oracle 基础之表操作
- 单片机数码管消隐及中断
- OpenGL 入门5
- Unity独立开发的开始
- 深入理解计算机系统——PE文件(2)