第一次习题课
第K个数(快速选择)

算法思想
🔺快排思想
※找到分界点x,q[l],q[(l + r) >> 1],q[r].
※左边所有数Left <= x,右边所有数Right >= x.
※递归排序Left,递归排序Right
🔺快选思想
※找到分界点x,q[l],q[(l + r) >> 1],q[r].
※左边所有数Left <= x,右边所有数Right >= x.
※统计x左边所有数的个数Sl,和右边所有数的个数Sr.
※①当K <= Sl时,则递归左边区间 要查找的个数为Sl
※②当K > Sl时,则递归右边区间 要查找的个数应变为K - Sl
※时间复杂度o(n).
完整代码
1 | |
逆序对的数量

算法思想
🔺归并排序思想
※[L,R] => 分为[L,mid],[mid + 1,R]
※递归排序[L,mid]和[mid + 1,R]
※归并,将左右两个有序序列合并成一个有序序列
完整代码
1 | |
数的三次方根

算法思想
与浮点二分一样 只是判断条件不同而已。
完整代码
1 | |
前缀和


算法思想
与一维前缀和算法一致
完整代码
1 | |
子矩阵的和

算法思想

完整代码
1 | |
一维差分

算法思想


完整代码
1 | |
差分矩阵

算法思想

完整代码
1 | |