# [LeetCode]#1337. The K Weakest Rows in a Matrix

**Environment: Python 3.8**

**Key technique: sorted**

Given a `m * n`

matrix `mat`

of *ones* (representing soldiers) and *zeros* (representing civilians), return the indexes of the `k`

weakest rows in the matrix ordered from the weakest to the strongest.

A row ** i** is weaker than row

**, if the number of soldiers in row**

*j***is less than the number of soldiers in row**

*i***, or they have the same number of soldiers but**

*j***is less than**

*i***. Soldiers are**

*j***always**stand in the frontier of a row, that is, always

*ones*may appear first and then

*zeros*.

**Example 1:**

**Input:** mat =

[[1,1,0,0,0],

[1,1,1,1,0],

[1,0,0,0,0],

[1,1,0,0,0],

[1,1,1,1,1]],

k = 3

**Output:** [2,0,3]

**Explanation:**

The number of soldiers for each row is:

row 0 -> 2

row 1 -> 4

row 2 -> 1

row 3 -> 2

row 4 -> 5

Rows ordered from the weakest to the strongest are [2,0,3,1,4]

**Example 2:**

**Input:** mat =

[[1,0,0,0],

[1,1,1,1],

[1,0,0,0],

[1,0,0,0]],

k = 2

**Output:** [0,2]

**Explanation:**

The number of soldiers for each row is:

row 0 -> 1

row 1 -> 4

row 2 -> 1

row 3 -> 1

Rows ordered from the weakest to the strongest are [0,2,3,1]

**Analysis:**

- Convert mat to a dictionary by summary each list[i] value.
- Sort is and return

**Solution:**

`class Solution:`

def kWeakestRows(self, mat, k):

ans={}

for i in range(len(mat)):

ans[i]=sum(mat[i])

ans=sorted(ans, key=ans.get)

return ans[:k]

**Submissions:**

**Reference:**

https://leetcode.com/problems/the-k-weakest-rows-in-a-matrix/discuss/1012471/python3