행렬에서 K개의 가장 약한 행
m x n
's(군인을 나타냄) 및 mat
's(민간인을 나타냄)의 1
이진 행렬0
이 제공됩니다. 군인들은 민간인 앞에 배치됩니다. 즉, 모든 1
는 각 행에 있는 모든 0
의 왼쪽에 나타납니다.다음 중 하나가 참인 경우 행
i
이 행j
보다 약한 것입니다.i
가 행의 군인 수j
보다 적습니다. i < j
입니다. 가장 약한 행에서 가장 강한 행으로 정렬된 행렬에서 가장 약한 행
k
의 인덱스를 반환합니다.예 1:
입력: 매트 =
[[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]],
케이 = 3
출력: [2,0,3]
설명:
각 행의 군인 수는 다음과 같습니다.
가장 약한 것부터 가장 강한 것으로 정렬된 행은 [2,0,3,1,4]입니다.
예 2:
입력: 매트 =
[[1,0,0,0],
[1,1,1,1],
[1,0,0,0],
[1,0,0,0]],
케이 = 2
출력: [0,2]
설명:
각 행의 군인 수는 다음과 같습니다.
가장 약한 것부터 가장 강한 것으로 정렬된 행은 [0,2,3,1]입니다.
제약:
m == mat.length
n == mat[i].length
2 <= n, m <= 100
1 <= k <= m
matrix[i][j]
는 0 또는 1입니다. 해결책:
import bisect
import heapq
class Solution:
def kWeakestRows(self, mat: List[List[int]], k: int) -> List[int]:
mat = [row[::-1] for row in mat]
heap = []
for i, row in enumerate(mat):
strength = -bisect.bisect_left(row, 1)
heapq.heappush(heap, (strength, i))
op = []
for i in range(k):
op.append(heapq.heappop(heap)[1])
return op
Reference
이 문제에 관하여(행렬에서 K개의 가장 약한 행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/the-k-weakest-rows-in-a-matrix-3dka텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)