题目描述:
题目思路:
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;}
}
刷题链接:
牛群分隔_牛客题霸_牛客网