标签:sidx ListNode bidx Leetcode86 next 链表 big small 分隔
题目连接:86.分隔链表
思路:遍历一遍链表,将表中结点分为两类,一类是小于给定的x,另一类是大于等于x。输出结果时要考虑四种情况:输入的表头为空;没有小于x的节点;没有大于等于x的节点;既有小于x又有大于等于x的。
代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode partition(ListNode head, int x) {
if(head == null) return head;
int len = 0, sidx = 0, bidx = 0;
for(ListNode p=head; p!=null; p=p.next) len ++;
ListNode[] small = new ListNode[len];
ListNode[] big = new ListNode[len];
for(ListNode p=head; p!=null; p=p.next){
if(p.val < x){
if(sidx > 0) small[sidx-1].next = p;
small[sidx++] = p;
}else{
if(bidx > 0) big[bidx-1].next = p;
big[bidx++] = p;
}
}
if(bidx>0 && sidx>0){
small[sidx-1].next = big[0];
big[bidx-1].next = null;
return small[0];
}
if(sidx==0){
return big[0];
}
return small[0];
}
}
执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:37.7 MB, 在所有 Java 提交中击败了81.10%的用户
标签:sidx,ListNode,bidx,Leetcode86,next,链表,big,small,分隔 来源: https://www.cnblogs.com/liuyongyu/p/14203731.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。