Leetcode sort Top interview Question 6道题总结

本文针对Leetcode下sort标签的6道Top interview Question进行总结

Leetcode 75. sort colors
使用快排算法思想,以1作为pivot,然后不断交换0和1

Leetcode 148. Sort List
对链表进行排序,使用归并排序能够达到O(nlogn)

Leetcode 315. Count of Smaller Numbers After Self
本题即为求逆序数对,求逆序相关的问题,归并排序是标准思路,归并排序的过程中,可以顺便把逆序数求出来,因为归并时,右边数组小的元素,都会被移到前面,此时便可计算出个数

使用归并排序用来考虑区间属性的排序问题

Leetcode 56. Merge Intervals
对区间进行排序,重点不在于具体排序方法,而是排序的比较方法上,多条件比较。

Leetcode 324. Wiggle Sort II
思想上类似于快排,找到中位数为pivot,将所有大于中间元素从前往后放在奇数位上,将所有小于中间元素的从后往前放在偶数位上,这样就形成错峰。与快排相比,只是partition函数之后的操作不一样。

快排的变化:可能pivot不同,也可能选出pivot如何移动元素也不同。
使用快排pivot思想将集合按大小一分为二。

Leetcode 179. Largest Number
本题使用基数排序的思想,但只需要比较第一个字符

Leetcode 215. Kth Largest Element in an Array
使用快排找到特定大小的数pivot,当一轮快排结束后,pivot正好在第k个位置上,那么就找到了。利用了快排每一趟排序后都会使一个数固定在合适的位置这个性质。

summary

  1. 排序问题主要分为以下四类:1、快排问题;2、归并排序问题;3、基数排序问题;4、排序焦点不在于具体排序方法,可在与具体比较方法的问题。
  2. 快排问题主要用于1、寻找某个具有“顺序”特性的点,这个点可当作pivot,使用快排的思想找到;2、对序列进行排序,在序列中选取一个pivot,通过该pivot将整个序列一分为二,然后通过快排将不同序列放在不同位置上。
    快排的具体变化可能在可能pivot不同,也可能选出pivot如何移动元素也不同。
  3. 归并排序问题主要用于考虑带有区间属性的排序问题,比如Leetcode 315中对每个数要考虑其右区间。

你可能感兴趣的:(sort)