部分题解保存
排序数组-快速排序
class Solution {
private final static Random random = new Random(System.currentTimeMillis());
public int[] sortArray(int[] nums) {
//20221015再回顾
quickSort(nums,0,nums.length-1);
return nums;
}
public void quickSort(int[] nums,int left,int right){
if(left>=right) return;
int pivotIndex = partition(nums,left,right);
quickSort(nums,left,pivotIndex-1);
quickSort(nums,pivotIndex+1,right);
}
private int partition(int[] nums, int left,int right){
int randomIndex = left+random.nextInt(right-left+1);
swap(nums,left,randomIndex);
int pivot = nums[left];
int j = left;
// 1 2 0 4 3
// j i ri
for (int i = left+1; i <= right; i++) {
if (nums[i]<=pivot){
// 1 2 0 4 3
// j i
j++;
// 1 2 0 4 3
// j i
swap(nums,i,j);
// 1 0 2 4 3
// j i
}
}
// 1 0 2 4 3
// j i
//目前就是j在比pivot小的最后一个元素的位置,但是毕竟不是pivot所以要交换
swap(nums,left,j);
// 0 1 2 4 3
// j i
return j;//返回的就是pivotIndex左边的比nums[j]小
}
private void swap(int[] nums,int i,int j){
int t = nums[i];
nums[i] = nums[j];
nums[j]=t;
}
}
148-链表排序-归并算法
给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。
示例 1:
输入:head = [4,2,1,3]
输出:[1,2,3,4]
示例 2:
输入:head = [-1,5,3,4,0]
输出:[-1,0,3,4,5]
示例 3:
输入:head = []
输出:[]
提示:
链表中节点的数目在范围 [0, 5 * 104] 内
-105 <= Node.val <= 105
进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?
class Solution {
public ListNode sortList(ListNode head) {
if (head == null || head.next == null) return head;
ListNode fast = head;
ListNode slow = head;
while(fast.next!=null&&fast.next.next!=null){
fast = fast.next.next;
slow = slow.next;
}
ListNode tmp = slow.next;
slow.next = null;//断开这个链表
ListNode left = sortList(head);//left这里会直接把整个左边的都看作是left开头的链表
ListNode right = sortList(tmp);//right是把整个右边作为链表
//下面是合并也就是left和right都是只有一个元素了。
ListNode h = new ListNode(0);
ListNode res = h;
while(left!=null && right != null){
if (left.val<right.val) {
h.next =left;
left = left.next;//left就指向了null
}else {
h.next =right;
right = right.next;//right就指向了null
}
h=h.next;
}
h.next = left!=null ? left:right;
return res.next;
}
}
标签:head,right,ListNode,nums,int,力扣,算法,排序,left
From: https://www.cnblogs.com/indullged/p/16792921.html