题目: 给出一个长度为 n 的单链表和一个值 x ,单链表的每一个值为 listi ,请返回一个链表的头结点,要求新链表中小于 x 的节点全部在大于等于 x 的节点左侧,并且两个部分之内的节点之间与原来的链表要保持相对顺序不变。 例如:给出 {1,4,3,2,5,2},3 返回 {1,2,2,4,3,5}
思路:
不使用额外空间划分,这要求我们声明两个链表头,分别存储<目标值的元素和>目标值的元素。
链表分割后进行合并,小于段的尾连接大于段的头
importjava.util.*;/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/publicclassSolution{/**
*
* @param head ListNode类
* @param x int整型
* @return ListNode类
*/publicListNode partition (ListNode head,int x){if(head==null||head.next==null)return head;// write code here//声明两段链表ListNode minNode=newListNode(-1);ListNode maxNode=newListNode(-1);ListNode min=minNode;ListNode max=maxNode;//元素大小分组while(head!=null){if(head.val<x){
min.next=head;
min=min.next;}else{
max.next=head;
max=max.next;}
head=head.next;}//链表合并
max.next=null;
min.next=maxNode.next;return minNode.next;}}
题目:给出一个长度为 n 的单链表和一个值 x ,单链表的每一个值为 listi ,请返回一个链表的头结点,要求新链表中小于 x 的节点全部在大于等于 x 的节点左侧,并且两个部分之内的节点之间与原来的链表要保持相对顺序不变。例如:给出 {1,4,3,2,5,2},3返回 {1,2,2,4,3,5}思路:不使用额外空间划分,这要求我们声明两个链表头,分别存储<目标值的元素和>目标值的元素。链表分割后进行合并,小于段的尾连接大于段的头import java.util.*;.