题解 | #单链表的排序#
单链表的排序
http://www.nowcoder.com/practice/f23604257af94d939848729b1a5cda08
思路:
1.遍历链表,把链表放入list集合中
2.利用集合中的sort方法,对ListNode按照val值升序排序。
注意;此处我使用Collections.sort(list,new comparator<>(){})的方式测试时正常,最终提交时超时了,而使用lambda表达式就成功了,也许是我哪里写错了。
3.最后再遍历list集合,一个一个串起来即可。
public ListNode sortInList (ListNode head) {
// write code here
ArrayList<ListNode> list=new ArrayList<ListNode>();
ListNode h=head;
while(h!=null){
list.add(h);
h=h.next;
}
list.sort((o1,o2)->{
return o1.val-o2.val;
});
ListNode head_new=new ListNode(-1);
ListNode p=head_new;
for(ListNode node:list){
p.next=node;
p=p.next;
}
p.next=null;
return head_new.next;
}
查看20道真题和解析

