2023年12月13日 星期三

[1582] Special Positions in a Binary Matrix

總覺得這題要考的,反而是直覺解法嗎?!
就是在雙迴圈裡面,當matrix[i][j] 是1的時候,再分別跑它的 row 跟column 回圈,
看別人是不是都是零!但總而言之Orz 別人有給厲害的解法,我們就來寫一寫 XD
然後就發現 int array 初始值好像還是用 calloc or memset 去寫好了 orz

就有一個行跟列的sum 分別,再回去跑雙迴圈,如果它自己是 1,它的行sum 跟  列sum 都是1,
那就是我們要找的了,ret++ !!!

int numSpecial(int** mat, int matSize, int* matColSize) {
int m =matSize;
int n = *matColSize;

int *sumI = calloc (m, sizeof(int));
int *sumJ = calloc (n, sizeof (int));
int ret=0;
int i, j;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
{
if (mat[i][j]==1)
{
sumI[i] += mat[i][j];
sumJ[j] += mat[i][j];
}
}

for (i=0;i<m;i++)
for (j=0;j<n;j++)
{
if (mat[i][j]==1 && sumI[i]==1 && sumJ[j]==1 )
ret++;
}
return ret;

}


沒有留言:

張貼留言