题解 | #单链表的排序#
单链表的排序
https://www.nowcoder.com/practice/f23604257af94d939848729b1a5cda08
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类 the head node
* @return ListNode类
*/
public ListNode sortInList (ListNode head) {
// write code here
if(head == null) {
return null;
}
List<Integer> list = new ArrayList<>();
ListNode loop = head;
while(loop != null) {
list.add(loop.val);
loop = loop.next;
}
ListNode loop2 = head;
// list.sort(Comparator.comparingInt(v -> v));
// for(int i=0; i<list.size(); i++) {
// loop2.val = list.get(i);
// loop2 = loop2.next;
// }
Integer[] arr = list.toArray(new Integer[0]);
sort(arr, 0, arr.length-1);
for(int i=0; i<arr.length; i++) {
loop2.val = arr[i];
loop2 = loop2.next;
}
return head;
}
public void sort(Integer[] arr, int left, int right) {
int keepLeft = left;
int keepRight = right;
if(left >= right) {
return;
}
Integer base = arr[left];
Integer slot = left;
while(left < right) {
while(left < right) {
if(arr[right] < base) {
arr[slot] = arr[right];
slot = right;
break;
}
right--;
}
while(left < right) {
if(arr[left] > base) {
arr[slot] = arr[left];
slot = left;
break;
}
left++;
}
}
arr[slot] = base;
sort(arr, keepLeft, slot-1);
sort(arr, slot+1, keepRight);
}
}
上海得物信息集团有限公司公司福利 1166人发布