leetcode题解-143. Reorder List
来源:互联网 发布:登陆淘宝网 编辑:程序博客网 时间:2024/05/16 04:52
题意:给定一个链表,把最后一个结点插入到第1个结点后,倒数第二个结点插入到第2个结点后,倒数第三个结点插入到第3个结点后,以此类推……注意:需要在原数组上进行操作,同时不能改变链表的value。
例子:
给定链表: L0→L1→…→Ln-1→Ln,
返回链表: L0→Ln→L1→Ln-1→L2→Ln-2→…
给定链表 1->2->3->4->5->6
返回链表 1->6->2->5->3->4
分析:
当链表的题做多了以后,分析问题的思路就会很清晰。首先,Ln,Ln-1,Ln-2是不会有顺序的,所以我们需要从链表中点往后逆序,然后再将把中点后第1个结点插入到第1个结点后,把中点后第2个结点插入到第2个结点后,即:
1->2->3->4->5->6
1->2->3->6->5->4
1->6->2->5->3->4
因为不涉及到头节点的改变,所以不用声明dummyNode,代码为:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode reorderList(ListNode head) { if(head == null || head.next == null) return head; ListNode fastNode = head; int len = 0; // 得到链表的长度 while(fastNode != null){ len++; fastNode = fastNode.next; } // 找到中点 ListNode pre = head; for(int i = 0; i < (len - 1) / 2; i++){ pre = pre.next; } // 将中点后的链表逆序 fastNode = pre.next.next; ListNode slowNode = pre.next; while(fastNode != null){ slowNode.next = fastNode.next; fastNode.next = pre.next; pre.next = fastNode; fastNode = slowNode.next; } // 将把中点后第1个结点插入到第1个结点后,把中点后第2个结点插入到第2个结点后... fastNode = pre.next; slowNode = head; pre.next = null; for(int i = 0; i < len / 2; i++){ ListNode temp = fastNode.next; fastNode.next = slowNode.next; slowNode.next = fastNode; slowNode = fastNode.next; fastNode = temp; } return head; }}
阅读全文
0 0
- leetcode题解-143. Reorder List
- leetcode题解-143. Reorder List
- LeetCode题解:Reorder List
- Reorder List|leetcode题解
- 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 143. Reorder List
- LeetCode 143. Reorder List
- LeetCode *** 143. Reorder List
- [Leetcode] 143. Reorder List
- leetcode.143. Reorder List
- LeetCode 143. Reorder List
- LeetCode-143.Reorder List
- Ubuntu系统安装碰到的一些问题
- 矩形
- 堆
- 6.4
- 【JS】关于表单提交前验证的方法和可能遇到的问题总结
- leetcode题解-143. Reorder List
- 最短路模板
- 58. Length of Last Word
- 【BZOJ】3668 [Noi2014]起床困难综合症 贪心
- ls 命令的实用范例
- 浅谈 Linux 内核开发之网络设备驱动
- vb.net 教程 8-3 数据库操作6
- HttpClient request payload post请求(传输的数据为json)
- Capstone训练营第六天