1337. 方阵中战斗力最弱的 K 行

image.png

思路

很显然这个是针对每行的个数进行排序,但是比较麻烦的一点是如果相同的话,要返回前边的索引。

这里有一种很有用很简单并且高效的的解决办法,就是对元祖进行排序

没错,python可以对元祖进行排序,先对第一个元素进行排序,如果相同,则对相通的元素对第二个元素进行排序,依次递推。

所以我们可以用一个列表保存元祖,每个元祖有两个元素(line_num,line_index)表示某行的1的个数和下标

class Solution(object):
    def kWeakestRows(self, mat, k):
        """
        :type mat: List[List[int]]
        :type k: int
        :rtype: List[int]
        """

        l,ans = [],[]

        for index,line in enumerate(mat):
            l.append((sum(line),index))

        l = sorted(l)

        for _,index in l:
            ans.append(index)

        return ans[:k]

北语张益达
6 声望4 粉丝