题目描述:
题目思路:
1.设置两个头指针表示两个分区,并对每个分区设置相对于的遍历指针,指向分区链表链尾
2.设置原链表的遍历指针,判断指针所指元素是否小于目标值x,小于的话将结点添加到第一个分区末尾,大于或等于则添加到第二个分区末尾。
3.最后注意,原链表遍历完成后,第二个分区末尾的next要指向null,用以表示链表结束。
代码实现:
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @param x int整型
* @return ListNode类
*/
public ListNode cow_partition (ListNode head, int x) {
// 设置两个头结点指针
ListNode pre1=new ListNode(-1);
ListNode pre1pointer=pre1;
ListNode pre2=new ListNode(-1);
ListNode pre2pointer=pre2;
//遍历链表的指针
ListNode nowpointer=head;
while(nowpointer!=null){
if(nowpointer.val<x){
pre1pointer.next=nowpointer;
pre1pointer=pre1pointer.next;
}else{
pre2pointer.next=nowpointer;
pre2pointer=pre2pointer.next;
}
nowpointer=nowpointer.next;
}
//这个地方要注意,第二个链表最后要设置null来表示链表结束
pre2pointer.next=null;
//两个链表链接起来
pre1pointer.next=pre2.next;
return pre1.next;
}
}
刷题链接: