题解 | #划分链表#
划分链表
http://www.nowcoder.com/practice/1dc1036be38f45f19000e48abe00b12f
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @param x int整型
* @return ListNode类
*/
public ListNode partition (ListNode head, int x) {
//这道题其实就是分为两个单独的链表,一个大于等于x的链表,一个小于等于x的链表,然后再合并
// write code here
ListNode smallHead = new ListNode(0);
ListNode small = smallHead;
ListNode largeHead = new ListNode(0);
ListNode large = largeHead;
while(head!=null){
if(head.val<x){
small.next = new ListNode(head.val);
small = small.next;
}else{
large.next = new ListNode(head.val);
large = large.next;
}
head = head.next;
}
//这里是合并的逻辑,先将large链表最后一个节点的下一个节点置空,然后再将小链表的下一个节点设置为大节点的头节点的下一个节点,然后返回小链表的头节点
large.next = null;
small.next = largeHead.next;
return smallHead.next;
}
}
查看5道真题和解析
小天才公司福利 1262人发布