建网站的工具/河北网站建设公司排名
文章目录
- 题目
- 题目解析
- 解题思维
- 代码如下
题目
题目解析
简单来说:就是然你给链表排序【升序:按照节点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;}
}