经典题目分析
一些经典的题目分析案例
@另维吖
种一棵树最好的时间是十年前,其次是现在。
展开
-
如何用快排思想在 O(n) 内查找第 K 大元素
如何用快排思想在 O(n) 内查找第 K 大的值 核心思想 快排核心思想就是 分治 和分区,可以用分区的思想来解答:在 O(n) 时间复杂度内求无序数组中的第 K 大元素。比如,4,2,5,12,3 这样一组数据,第 3 大元素就是 4。 可以选择数组区间 A[0…n-1] 的最后一个元素 A[n-1] 作为 pivot,对数组 A[0…n-1] 原地分区,这样数组就分成了三部分,A[0…p-1]、A[p]、A[p+1…n-1]。(当然 pivot 的选择还可以优化,这里我们只用其中的一种方式) 如果 p+原创 2020-06-27 21:55:11 · 387 阅读 · 0 评论 -
求解数组中的逆序对并优化时间复杂度
数组中的逆序对 题目描述 有一组数,对于其中任意两个数组,若前面一个大于后面一个数字,则这两个数字组成一个逆序对。请设计一个高效的算法,计算给定数组中的逆序对个数。 给定一个int数组A和它的大小n,请返回A中的逆序对个数。保证n小于等于5000。 暴力破解 遍历每一个数,比较这个数和它后面的,出现逆序情况计数器就 + 1。 import java.util.*; public class Main { public int count(int[] A,int n) { int cnt = 0;原创 2020-06-28 16:46:03 · 1054 阅读 · 0 评论