题目:
是否独立思考解决:否,完全没有思路,在参考解题思路后,仍然没有解决出来,以后刷题过程没有思路可以参考别人的解题思路,但是出现问题一定要多加思考,不能一心想着通过为标准,照着别人的代码抄
解题思路:既然题目要求比目标值小的数要排在前面,比目标值大的数不动,那么直接分为两个链表small与large,遍历head链表之后,比目标值小的值就放在small中,比目标值大的值就放在large中
解题代码:
class Solution {
public ListNode partition(ListNode head, int x) {
if(head==null){return null;}
ListNode smallhead = new ListNode(0);//创建头结点,并保持头结点不动是指向标
ListNode small = smallhead;//创建节点指向节点方便后续节点的存储与移动
ListNode largehead = new ListNode(0);
ListNode large = largehead;
while(head!= null){
if(head.val<x){//如果链表中的值比目标值小则把,链表的值放入small链表中,并向后移动一位方便存储下一位
small.next = head;
small=small.next;
}else{
large.next = head;
large =large.next;
}
head = head.next;//链表第一个值存入small或者large后向后遍历
}
small.next=largehead.next;//head遍历完后,small与large要拼接起来,记得因为我们large的头结点是我们开始定义的 new ListNode(0);所以我们要指向头结点的下一位
large.next=null;
return smallhead.next;
}
}