1337. The K Weakest Rows in a Matrix

解法一 排序

  1. 排序的参数的就是每一行的和
  2. index和每一行的和的对应关系( f = sum(data[i]) )
  3. 然后取前k个数
    注意点
  • lambda表达式本质上就是一个匿名函数

解法二 top k问题解法 使用heapq

  1. 遍历list, 将index和sum(data[index]),使用set集合
  2. 放入到heapq中,如果长度大于k了, 就pop

注意点

  • heapq,pop的时候pop的最小的,求最小的,需要pop最大的,此时需要使用复数
  • 取值的时候使用nlargest函数

解法三 二分法 + 最大堆

  1. 在sum中需要遍历求和,此时可以使用二分法进行求和
  2. 因为有个条件是1总是在0的前面

注意点
最大堆和最小堆的概念

  • 最大堆
    • 概念: 根节点的值最大
    • 应用: 计算top k 最小的节点
  • 最小堆
    • 概念: 根节点的值最小
    • 应用: 计算top k 最大的节点
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 动态规划 111. 爬楼梯思路类似斐波那契数列注意考虑第 0 阶的特殊情况 272. 爬楼梯 II思路类似上题,只...
    6默默Welsh阅读 2,456评论 0 1
  • Heap in python Heap,即堆,也就是优先队列。我们可以在这里找到[]维基百科](https://e...
    英武阅读 2,774评论 0 51
  • 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不...
    曲终人散Li阅读 3,371评论 0 19
  • 1. 找出数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,...
    BookThief阅读 1,815评论 0 2
  • 思考 现在有如下需求,设计一种数据结构,用来存放整数,要求提供3个接口 添加元素 获取最大值 删除最大值 通过我们...
    ducktobey阅读 882评论 0 1