2행 이진 행렬 재구성하기
n
열과 2
행이 있는 행렬의 다음 세부 정보가 제공됩니다.0
또는 1
일 수 있습니다. upper
로 지정됩니다. lower
로 지정됩니다. colsum[i]
입니다. 여기서 colsum
는 길이가 n
인 정수 배열로 제공됩니다. 당신의 임무는
upper
, lower
및 colsum
로 행렬을 재구성하는 것입니다.2차원 정수 배열로 반환합니다.
하나 이상의 유효한 솔루션이 있는 경우 그 중 하나가 수락됩니다.
유효한 솔루션이 없으면 빈 2차원 배열을 반환합니다.
예 1:
입력: 상한 = 2, 하한 = 1, 열 = [1,1,1]
출력: [[1,1,0],[0,0,1]]
설명: [[1,0,1],[0,1,0]], [[0,1,1],[1,0,0]]도 정답입니다.
예 2:
입력: 상한 = 2, 하한 = 3, 열 = [2,2,1,1]
출력: []
예 3:
입력: 상위 = 5, 하위 = 5, 열 = [2,1,2,0,1,0,1,2,0,1]
출력: [[1,1,1,0,1,0,0,1,0,0],[1,0,1,0,0,0,1,1,0,1]]
제약:
1 <= colsum.length <= 10^5
0 <= upper, lower <= colsum.length
0 <= colsum[i] <= 2
해결책:
class Solution:
def reconstructMatrix(self, upper: int, lower: int, colsum: List[int]) -> List[List[int]]:
n = len(colsum)
op = [[0 for i in range(n)] for j in range(2)]
ctr = []
for i in range(n):
if colsum[i] == 2:
op[0][i] = 1
upper -= 1
op[1][i] = 1
lower -= 1
elif colsum[i] == 1:
ctr.append(i)
if upper >= 0 and lower >= 0 and upper + lower == len(ctr):
if upper > 0:
for i in ctr[:upper]:
op[0][i] = 1
if lower > 0:
for i in ctr[-lower:]:
op[1][i] = 1
return op
return []
Reference
이 문제에 관하여(2행 이진 행렬 재구성하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/reconstruct-a-2-row-binary-matrix-1kj9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)