python - leetcode - 547 - 모멘트

1397 단어 leetcode 알고리즘
* * * 문제 번호: * 547 * * * 문제: * * 친구 권 * * 난이도: * * 중간 * 내용: * * 반 에 N 명의 학생 이 있 습 니 다.그 중 어떤 사람 은 친구 이 고, 어떤 사람 은 그렇지 않다.그들의 우정 은 전달 성 을 가지 고 있다.A 는 B 의 친구 이 고 B 는 C 의 친구 라 는 것 을 알 고 있다 면 우 리 는 A 도 C 의 친구 라 고 생각 할 수 있다.이른바 친구 권 이란 모든 친구 의 집합 을 가리킨다.
N N 의 행렬 M 을 지정 하여 학급 중 학생 간 의 친구 관 계 를 나타 낸다.만약 에 M [i] [j] = 1 은 i 번 째 와 j 번 째 학생 이 서로 친구 가 되 는 것 을 알 고 있 음 을 나타 낸다. 그렇지 않 으 면 모른다.너 는 모든 학생 들 이 이미 알 고 있 는 친구 권 의 총 수 를 출력 해 야 한다.
예시 1:
  : 
[[1,1,0],
 [1,1,0],
 [0,0,1]]
  : 2 
  :     0   1    ,        。
 2           。    2。

예시 2:
  : 
[[1,1,0],
 [1,1,1],
 [0,1,1]]
  : 1
  :     0   1    ,  1   2    ,    0   2    ,            ,  1。

주의:
N 은 [1, 200] 의 범위 내 에 있다
4. 567917. 모든 학생 에 게 M [i] [i] = 1 이 있 습 니 다
4. 567917. M [i] [j] = 1 이 있 으 면 M [j] [i] = 1 이 있다
코드 는 다음 과 같 습 니 다:
class Solution:
    def findCircleNum(self, M: 'List[List[int]]') -> 'int':
        visited = [0 for _ in range(len(M))]
        n = len(M)
        res = 0
        for i in range(n):
            if visited[i] == 0:
                res += 1
                self.dfs(M, i, visited)
        return res
    
    def dfs(self, M, i, visited):
        visited[i] = 1
        for j in range(len(M)):
            if M[i][j] != 0 and visited[j] == 0:
                self.dfs(M, j, visited)

좋은 웹페이지 즐겨찾기