摘要: 13.5: 最大线段重合问题(堆实现),敏感度 给定很多线段,每个线段都有左右两个位置 [ start, end ],表示线段开始位置和结束位置,左右都是闭区间, 规定: 1、线段的开始和结束位置一定都是整数值; 2、线段重合区域的长度必须 >= 1,一个点不算重合区域; 线段 a [1, 3] b 阅读全文
posted @ 2022-05-17 15:40 yzmarcus 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 13.4:建堆两种方式以及时间复杂度讨论 这也是堆这一章节最重要的两方法,涉及到后面的加强堆的实现。 1、如果是一个数一个数的给,自然可以通过heapInsert()来建堆,这是自下而上的方式, 时间复杂度O(N * logN); 2、给一个数组建堆也可以通过heapify()的方式,这是自上而下的 阅读全文
posted @ 2022-05-17 15:16 yzmarcus 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 13.3:堆排序说明 基于比较的排序时间复杂度O(N * logN)是最好的了 1、先让整个数组都变成大根堆,建立堆的过程 1.1、从上到下的方法,时间复杂度O(N * logN) 1.2、从下到上的方法,时间复杂度O(N) 2、把堆的最大值和堆末尾的值交换,然后减少堆的大小之后,再去调整堆,一直周 阅读全文
posted @ 2022-05-17 10:32 yzmarcus 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 13.2:堆排序 基于比较的排序时间复杂度O(N * logN)是最好的了 理解了堆以及堆里面的heapInsert() 和heapify(),堆排序就简单了。 1、把数组中的所有数都调成大根堆。heapSize = N。 2、0位置的数和N-1位置的数进行交换。heapSize = N - 1。 阅读全文
posted @ 2022-05-16 19:31 yzmarcus 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 13.1:堆的heapify下沉过程 现在的要求是: 此时在大根堆上,将最大的数max返回,剩下的数自动按照大根堆的要求重新建成新的大根堆? 操作思路: [ 8 7 0 1 6 ] 下标: 0 1 2 3 4 我们知道大根堆上最大值一定在index = 0位置上,所以给用户直接返回max = 8没问 阅读全文
posted @ 2022-05-16 11:26 yzmarcus 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 13:堆结构heap (priority queue)重要结构 之 上移过程heapInsert() 1、堆结构就是用数组实现的完全二叉树结构; 2、完全二叉树中如果每棵树(包括子数) 的最大值都在顶部 是 大根堆; 3、完全二叉树中如果每棵树(包括子数) 的最小值都在顶部 是 小根堆; 4、堆结构 阅读全文
posted @ 2022-05-16 10:36 yzmarcus 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 12:比较器 1、比较器的实质是重载比较运算符; 2、比较器可以很好的应用在特殊标准的排序上; 3、比较器可以很好的应用在根据特殊标准的结构上; 4、写代码异常容易,还用于泛型编程; 1 public static class Student { 2 public String name; 3 pu 阅读全文
posted @ 2022-05-16 09:13 yzmarcus 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 11.3:逆序对问题 [3 1 0 4 3 1] 在这个数组里有多少个逆序对? 从某个数开始往后看 1、3 1;3 0;3 1; 2、1 0; 3、4 3; 4 1; 4、3 1; 现在是不是在说每个数的右边有多少个数比它小? 经典方法从右往左merge,规则 1、当两个数相等的时候,先拷贝右组数。 阅读全文
posted @ 2022-05-12 10:15 yzmarcus 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 11.4:大于2倍问题 [ 6 7 1 3 2] 每个数num,问num右边 有多少个数满足 :num > 右*2 6; 1 和 2; 6 > 右侧有2个数 [ 1 2 ] 乘以2 7; 1、3和2; 7 > 右侧有3个数 [1 2 3 ] 乘以2 1; 1 > 右侧有0个数 [ ] 乘以2 3; 阅读全文
posted @ 2022-05-12 10:15 yzmarcus 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 11.2:小和问题,暴力求解和归并思想求解 例: [ 6 3 2 1 6 7] 每个数左边,比它小的数累加起来 6; 6的左边有多少个数比6小,0个; 3; 3的左边有多少个数比3小,0个; 2; 2的左边有多少个数比2小,0个; 1; 1的左边有多少个数比1小,0个; 6; 6的左边有多少个数比6 阅读全文
posted @ 2022-05-11 16:24 yzmarcus 阅读(41) 评论(0) 推荐(0) 编辑