2023年11月28日 星期二

[547] Number of Provinces

找圈圈?!好像把它想的太難了Orz 
但事實的真相就是我沒有慧根吧嗚嗚嗚嗚嗚(奔入雨中)

其實不需要去管input 的"二維"陣列。只要用一個一維的 visted 的array 代表每一個node 被走過了沒,從第一個node 開始往下走,碰到還沒走過的node 才把ret 加一,接著就做dfs 去看它連接了誰,一路往後link 到它的子子孫孫,看扣: 

void dfs(int** matrix,int x, int len, bool *visted)
{
if (visted[x]==true)
return;
for (int i=0;i<len;i++)
{
if (matrix[x][i]==1 && !visted[i])
{
visted[x]=true;
dfs(matrix,i,len,visted);
}
}
return;
}

int findCircleNum(int** isConnected, int isConnectedSize, int* isConnectedColSize) {
bool *visted = calloc (isConnectedSize, sizeof(bool));

int ans = 0;
for (int i=0;i<isConnectedSize;i++)
if (!visted[i])
{
ans++;
dfs(isConnected, i,isConnectedSize,visted );
}

return ans;

}

看完解答後覺得自己是蠢蛋,好久沒有"我好蠢"的感慨了 QQ

沒有留言:

張貼留言