2.4---把链表划分为两部分(CC150)
2015-12-17 11:15
309 查看
注意,题目要求要保持两部分的相对顺序,所以,用交换是不行的。
import java.util.HashSet; import java.util.Set; class ListNode{ int val; ListNode next; ListNode(int x){ val = x; } } public class Solution{ public static void main(String[] args){ ListNode head = new ListNode(3); head.val = 3; ListNode node = new ListNode(1); node.val = 1; head.next = node; ListNode tmp = head; while(tmp != null){ System.out.println(tmp.val); tmp = tmp.next; } tmp = partition(head,2); System.out.println("delete"); while(tmp != null){ System.out.println(tmp.val); tmp = tmp.next; } } public static ListNode partition(ListNode head, int x) { //思路:用两个链表记录一下两部分,然后合并 if(null == head) return head; ListNode greater = new ListNode(0);//小的 ListNode smaller = new ListNode(0);//>= ListNode tmp1 = greater; ListNode tmp2 = smaller; ListNode tmp = head; while(tmp != null) { if(tmp.val < x) { ListNode n = new ListNode(tmp.val); tmp2.next = n; tmp2 = tmp2.next;//error: not write } else { ListNode m = new ListNode(tmp.val); tmp1.next = m; tmp1 = tmp1.next;//error: not write } tmp = tmp.next;//总是忘记写这一步 } //最后合并 tmp1.next = null; tmp2.next = greater.next; return smaller.next; } }
相关文章推荐
- TableView刷新 局部刷新等
- Unable to resolve target 'android-15'如何解决?
- jquery 工作笔记,不断整理中..
- 看门狗定时器WDT
- HDOJ 题目2266 How Many Equations Can You Find(DFS水)
- Java设计模式圣经连载(05)-代理模式
- 矩阵向量求导法则
- 《Swift 的数组 (Array)的声明和 数组的基本操作详解 和 元组(Tube) 的声明和使用》
- oracle-删除归档日志
- 记忆2009
- C#当中的多线程_任务并行库(上)
- css3实现不一样的下拉菜单框
- 如何在Android Studio中导入eclipse的library project
- 2733: [HNOI2012]永无乡
- iOS-比较两张图片内容是否相同,判断一个imageView是否有image
- 共用体简单例子
- Windows平台分布式架构实践 - 负载均衡
- 【jQuery】使用clone()方法复制元素
- iOS一次性移除所有子视图
- 电商之购物体验