大家好,又见面了,我是你们的朋友全栈君。
描述:
现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/
public class Partition {
public ListNode partition(ListNode pHead, int x) {
// write code here
if(pHead == null || pHead.next == null){
return pHead;
}
//newHead的指针
ListNode newHead = new ListNode(-1);
ListNode tmp = newHead;
//pHead的指针
ListNode preCur = pHead;
ListNode cur = preCur.next;
//把小于x的节点放进newHead链表里
//其余结点不动
while(cur != null){
if(cur.val < x){
preCur.next = cur.next;
tmp.next = cur;
tmp = tmp.next;
cur = preCur.next;
}else{
preCur = preCur.next;
cur = preCur.next;
}
}
//判断头节点并拼接链表newHead -> pHead
if(pHead.val < x){
cur = pHead;
pHead = pHead.next;
cur.next = newHead.next;
tmp.next = pHead;
return cur;
}else{
tmp.next = pHead;
return newHead.next;//删除pHead中的头节点
}
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135328.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...