LeetCode | Heap | 502.

502. IPO

是贪心算法in general。

一共两个变量:profit和capital。profit要求是找最大的。capital要求小于w。

两种筛选方法:把capital符合要求的排个序,找profit最大的。按照profit排序,从大到小找capital满足条件的。

哪种更好?

排序一定要用pq吗?

答题:这道题需要排序,又需要相对快速的push和pop。vector搭配sort每次插入都是logN。又不能直接hash map,因为没有排序。想要又有排序又有快速插入还可以用multimap。不懂为什么这道题不用。

因为w只会增加,所以可以一直从capital的pq往profit的pq里push

关于heap vs pq:

LeetCode | Heap | 502._第1张图片LeetCode | Heap | 502._第2张图片

 A Heap is a special Tree-based data structure in which the tree is a complete binary treeLeetCode | Heap | 502._第3张图片LeetCode | Heap | 502._第4张图片

priority queue is a container adaptor that provides constant time lookup of the largest (by default) element, at the expense of logarithmic insertion and extraction

 

你可能感兴趣的:(leetcode,算法)