給一個矩陣,
零的item必須把它的行跟列全部都設成0
存回原本的矩陣回傳
被改成0的部分不適用"行跟列全部都設成0"的規則
也就是說改成0的規則不必生生不息的往下傳遞這樣.
感覺不是一個好的解法,
但執行時間好像沒有慢到哪裡去啊(?)
那就這樣好了哈哈哈哈哈(顯示為忽略題意上的space問題)
void setZeroes(int** matrix, int matrixRowSize, int matrixColSize) {
int r = 0;
int c = 0;
int Rarray[matrixRowSize];
int RCount=0;
int Carray[matrixColSize];
int CCount=0;
int i,k;
for(r=0;r<matrixRowSize; r++)
{
for (c=0;c<matrixColSize;c++)
{
if (matrix[r][c]==0)
{
Rarray[RCount++] = r;
break;
}
}
}
for (c=0;c<matrixColSize;c++)
{
for(r=0;r<matrixRowSize; r++)
{
if (matrix[r][c]==0)
{
Carray[CCount++] = c;
break;
}
}
}
for(k=0;k<RCount;k++)
for (i=0;i<matrixColSize;i++)
matrix[Rarray[k]][i] = 0;
for(k=0;k<CCount;k++)
for (i=0;i<matrixRowSize;i++)
matrix[i][Carray[k]] = 0;
}
據說可以在讀到零的時候把該row和該column的第一個設成0
也就是和我拿Carray 和Rarray來存一樣意思,
但是不需要另外的space, 而是用原本的matrix空間
hmm~ brilliant.
沒有留言:
張貼留言