题目
题目解析
简单来说:就是然你给链表排序【升序:按照节点val值的大小】
解题思维
我用的方法是暴力解法:按照链表的节点个数创建一个整形数组,将 链表 每个节点的val值都存入这个数组中,使用Arrays.sort(数组名),进行排序。 最后,创建一个傀儡头节点,循环遍历该数组 根据 其 元素的值,创建节点,然后连接。
代码如下
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode sortList(ListNode head) {
if(head == null){
return head;
}
int len = 0;
ListNode tmp = head;
while(tmp != null){//遍历链表,确定节点个数
len++;
tmp = tmp.next;
}
int[] arr = new int[len];// 根据链表节点个数,创建一个整形数组
int i = 0;// 下标
while(head != null){// 遍历链表将每个节点的val值,存入数组中
arr[i++] = head.val;
head = head.next;
}
Arrays.sort(arr);// 排序【默认升序】
ListNode newHead = new ListNode();// 傀儡头节点
ListNode cur = newHead;// 替身引用,用于连接节点
for( i = 0; i < len;i++){// 循环遍历数组,按照每个元素的值,去创建对应的节点
ListNode node = new ListNode(arr[i]);
cur.next = node;
cur = cur.next;
}
return newHead.next;
}
}