leetcode题解-86. Partition List
来源:互联网 发布:淘宝刷两单会坐牢吗 编辑:程序博客网 时间:2024/06/05 04:58
题目:
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.You should preserve the original relative order of the nodes in each of the two partitions.For example,Given 1->4->3->2->5->2 and x = 3,return 1->2->2->4->3->5.
本体是要将一个链表分为两部分,一个是比x大的,一个是比x小的。但是并不需要重新排序,而要保持元素间的相对位置。有两种思路,一种是使用两个链表分别保存比x大的,小的元素,然后再拼接在一起,另外一种思路不需要使用额外的存储空间,使用in-place方式。代码入下:
//方法一 public ListNode partition1(ListNode head, int x) { //重新定义两个链表,分别保存较大值和较小值,其元素顺序与原链表相对位置保持一致 ListNode dummy1 = new ListNode(0), dummy2 = new ListNode(0); ListNode curr1 = dummy1, curr2 = dummy2; while (head!=null){ if (head.val<x) { curr1.next = head; curr1 = head; }else { curr2.next = head; curr2 = head; } head = head.next; } //较大的链表最后要指向空,并将其放在较小的链表后面 curr2.next = null; curr1.next = dummy2.next; return dummy1.next; }
//方法二,in-place方式 public static ListNode partition(ListNode head, int x) { if(head == null || head.next == null) return head; ListNode pre = new ListNode(0); pre.next = head; ListNode small=pre, cur=head, big=head; while(cur != null && cur.val < x){ small = cur; cur = cur.next; } while(cur != null){ if(cur.val < x){ big.next = cur.next; cur.next = small.next; small.next = cur; small = cur; cur = big.next; }else { big = cur; cur = cur.next; } } return pre.next; }
阅读全文
0 0
- leetcode题解-86. Partition List
- leetcode题解-86. Partition List
- LeetCode题解:Partition List
- 86. Partition List【M】【48】【leetcode题解】
- LeetCode题解-86-Partition List
- LeetCode 题解(159): 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
- 86. Partition List LeetCode
- Leetcode 86. Partition List
- LeetCode *** 86. Partition List
- LeetCode 86. Partition List
- [LeetCode]86. Partition List
- sass常用函数总结
- Bitmap与Uri互转、Activity传递Bitmap、分享Bitmap
- ECB模式详解
- 浏览器插件开发-纯属兴趣
- [LeetCode] 564. Find the Closest Palindrome 深入浅出讲解和代码示例
- leetcode题解-86. Partition List
- Java对象、对象引用关系及参数传递讨论
- Free, simple code to find out what SQL statements are running slow in SQL Server right now
- python学习中的reduce()函数和lambda表达式
- Android Hal层简要分析
- HTML标签
- Spring-@Autowired注解、@Resource注解和@Service注解
- Java消息中间件--JMS规范
- 3523. 【NOIP2013模拟11.7A组】JIH的玩偶(tree)