LeetCode - 86. Partition List
来源:互联网 发布:java简单学生管理系统 编辑:程序博客网 时间:2024/04/29 07:38
这道题的思路是先初始化两个list,然后遍历原来的list,发现小于x的分到小的list,反之分到大的list,然后将两个list merge一下,注意头和尾,时间复杂度O(n),空间复杂度O(n),代码如下:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { public ListNode partition(ListNode head, int x) { if(head == null){ return head; } // Create dummy nodes ListNode leftDummy = new ListNode(0); ListNode rightDummy = new ListNode(0); // Initialize pointers ListNode left = leftDummy; ListNode right = rightDummy; while(head != null){ // Add nodes to leftDummy and rightDummy if(head.val < x){ left.next = head; left = head; }else{ right.next = head; right = head; } head = head.next; } // Merge two lists right.next = null; left.next = rightDummy.next; return leftDummy.next; }}
知识点:
1. dummyNode的使用,在Linked List或者树的结构当中,如果头节点或者是root要变化,那么最好使用dummyNode,令dummyNode.next = head/root,返回的时候只要返回dummyNode.next即可,这样可以避免对头节点操作的麻烦
2. 在处理Linked List的问题的时候,除了two pointers的思路,如果在原来的list上面操作很不方便,那么可以采用多个list进行,最后对这些list进行操作
3. 这道题目的代码写得很优雅,可以记录一下
0 0
- [LeetCode]86.Partition List
- LeetCode 86. Partition List
- [Leetcode] 86. Partition List
- LeetCode --- 86. Partition List
- [leetcode] 86.Partition List
- [leetcode] 86. Partition List
- [LeetCode]86. Partition List
- 86. Partition List LeetCode
- Leetcode 86. Partition List
- LeetCode *** 86. Partition List
- LeetCode 86. Partition List
- [LeetCode]86. Partition List
- LeetCode 86. Partition List
- leetcode 86. Partition List
- Leetcode 86. Partition List
- LeetCode-86.Partition List
- [Leetcode]86. Partition List
- LeetCode - 86. Partition List
- Program4_P
- Windows下使用软引导安装Linux系统
- Tomcat的配置全过程
- 检测一个字符串是否为一个有效的编码格式字符串
- 我是进击的码农4
- LeetCode - 86. Partition List
- Retrofit2.0 完美同步Cookie实现免登录
- Java IO字节流操作及实现记事本Application小程序
- 城市换乘线路问题
- Android_Bitmap_图片的二次采样并生成缩略图
- 关于自定义UIControl
- scrapy-redis分布式爬虫原理分析
- Mysql 复制一条数据
- PHPstrom2016.1激活与汉化【2016.06.21依旧可用】