Leetcode No.1046
Create@2023/06/05 21:21:43 | Update@2023/06/12 20:56:12Tags: leetcode, heap, priority-queueleetcode #1046 题解
1046
分析
- 理解粉碎的规则 新=重-轻 -> 放回
- 从取出最重的两块想到排序的方法
- 常规排序法: 重新放回导致顺序发生错乱 重新排序
- 最大堆法
- 降低每次插入新数据后的排序复杂度 -> 堆 因为是取最大的元素 采用最大堆
- 先生成堆 每次Pop两个元素 (最大堆的Pop操作) 计算插值,>0则插入到堆中 (最大堆的Push操作)
- 排序 N*Log(N) 每次调整Log(n) 共N次
高赞解答分析
- 取出最大石头: 大根堆取出元素
- 粉碎和放回: 计算差值并放回大根堆
- 最终结果: 大根堆元素个数为0或1
易错点分析
- 如何从常规排序想到堆