问题:
难度:medium
说明:
一个无序链表,将里面的元素按值从小到大排序。
问题链接:https://leetcode.com/problems/insertion-sort-list/
输入案例:
Example 1:
Input: 4->2->1->3
Output: 1->2->3->4
Example 2:
Input: -1->5->3->4->0
Output: -1->0->3->4->5
我的代码:
题目逻辑上还是挺绕的,重新一个一个创建链表对象并不能提高效率,如果玩指针,java 语言并不能玩指针,我就得自己把指针的元素一个一个创建,最后再进行 On2 的时间复杂度排序,都不理想。所以还不如多用用 java api 更好玩。
class Solution {
private static int[] arr = new int[10000]; // 预创建
public ListNode insertionSortList(ListNode head) {
if(head != null) {
int len = 0;
ListNode h = head;
while(head != null) { // 直接获取值
arr[len ++] = head.val;
head = head.next;
}
int[] newArr = Arrays.copyOf(arr, len);
Arrays.sort(newArr); // api处理
head = h;
int i = 0;
while(head != null) { // 不用玩指针,直接修改对象值
head.val = newArr[i ++];
head = head.next;
}
return h;
}
return null;
}
}