【Python刷题Leetcode】高级数据结构

一、Trie树(208、211)

  • 字典树 搜索输入前缀预测后面内容就是这个数据结构
  • 用路径存字符,而不是节点

二、并查集

【Python刷题Leetcode】高级数据结构_第1张图片

【方法1】深度优先搜索(跟岛屿数量的区别:这里visit数组是一维的)

class Solution:
    def findCircleNum(self, M: List[List[int]]) -> int:
        # 方法1 图的DFS
        if not M:
            return 0
        
        # 初始化visit数组存储当前学生是否遍历 和pyq count值
        visit = [0]*len(M)
        count = 0

        # 深度优先搜索
        def dfs(i):
            visit[i]=1
            # 遍历i的邻接点
            for j in range(len(M[i])):
                if visit[j]==0 and M[i][j]==1:
                    dfs(j)
        
        # 遍历每个学生(且只遍历一次)
        for i in range(len(M)):
            if visit[i]==0:
                dfs(i)
                count+=1

        return count

【方法2】并查集(合并、查询、集合)用森林实现

【Python刷题Leetcode】高级数据结构_第2张图片

【Python刷题Leetcode】高级数据结构_第3张图片

【Python刷题Leetcode】高级数据结构_第4张图片

你可能感兴趣的:(NLP校招总复习)