Java——将单向链表按某值划分成左边小、中间相等、右边大的形式(进阶问题)
2017-11-28 16:56
323 查看
【题目】
与上一篇博客相似,唯一的不同就是在原问题的要求智商再增加如下两个要求。
在左、中、右三个部分的内部也做顺序要求,要求每部分里的节点从左到右的顺序与原链表中节点的先后次序一致
【代码】
与上一篇博客相似,唯一的不同就是在原问题的要求智商再增加如下两个要求。
在左、中、右三个部分的内部也做顺序要求,要求每部分里的节点从左到右的顺序与原链表中节点的先后次序一致
【代码】
public static Node listPartition2(Node head,int pivot) { Node sH = null; Node sT = null; Node eH = null; Node eT = null; Node bH = null; Node bT = null; Node next =null; while(head!=null) { next = head.next; head.next = null; if(head.value < pivot) { if(sH==null) { sH = head; sT = head; }else { sT.next = head; sT = head; } }else if(head.value == pivot) { if(eH==null) { eH = head; eT = head; }else { eT.next = head; eT = head; } }else { if(bH==null) { bH = head; bT = head; }else { bT.next = head; bT = head; } } head = next; } if(sT != null) { sT.next = eH; eT = eT == null ? sT : eT; } if(eT!=null) { eT.next = bH; } return sH != null ? sH : eH !=null ? eH : bH; }
相关文章推荐
- Java——将单向链表按某值划分成左边小、中间相等、右边大的形式(基础问题)
- 链表问题---将单向链表按某值划分成左边小,中间相等,右边大的形式
- 将单向链表按某值划分成左边小、中间相等、右边大的形式
- [链表] - 将单向链表按某值划分成左边小、中间相等、右边大的形式
- 将单向链表按某个值划分成左边小、中间相等、右边大的形式 Python 版
- 将单向链表按某值划分成左边小、 中间相等、 右边大的形式~迎娶是挺
- 将单向链表按某值划分成左边小、中间相等、右边大的形式
- 将单向链表按某值划分成左边小,中间相等,右边大
- C++将链表划分为左边小,中间等,右边大于pivotKey的形式
- 把单链表按某值划分成左边小,中间相等,右边大的形式,时间O(n),空间O(1)
- [JS]链表划分给定中间值,小的在左边,大的在右边并保持原排序
- C++链表划分左边小中间等右边大 时间复杂度O(n) 空间复杂度O(1)
- [JS]链表划分给定中间值,小的在左边,大的在右边并保持原排序
- 划分一个整形数组,把负数放在左边,零放在中间,正数放在右边
- 面试题12 在一个单向链表中 指定一个元素 x 然后将所有小于 x 的元素都放到 x 左边 剩下的元素放到 x 的右边
- [转]用单向循环链表解决约瑟夫环问题
- 《算法之美》の链表问题の单向链表的反转
- 《算法之美》の链表问题の单向链表的反转
- 单向单链表的java实现
- 约瑟夫问题(单向链表)