IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> [Leetcode] 每日两题 851 1603 -day41 -> 正文阅读

[数据结构与算法][Leetcode] 每日两题 851 1603 -day41

851. 喧闹和富有

在这里插入图片描述

方法一 DFS 先记录每个节点的直接指向节点,也就相当于所有的边,然后对于每个节点,深度优先搜索他的子节点,直到没有子节点,然后逐一返回,判断该父节点的当前值是否小于其子节点的当前值,若是,则将子节点的值答案替换

class Solution:
    def loudAndRich(self, richer: List[List[int]], quiet: List[int]) -> List[int]:
        n = len(quiet)
        lis = [[i,quiet[i]] for i in range(n)]
    
        #print(lis)
        dic = defaultdict(list)
        for tis,oth in richer:
            dic[oth].append(tis)

        def dfs(child):
            if lis[child][0] != child :
                return
            if child not in dic:
                return 
            for node in dic[child]:
                dfs(node)
                if lis[node][1] < lis[child][1]:
                    lis[child][0],lis[child][1] =lis[node][0],lis[node][1]
        for i in range(n):
            dfs(i)
        return [x[0] for x in lis]


方法二 拓扑排序 先构建所有的边 并且统计每个节点的入度, 首先将所有入度为0的点加入队列(这些点都是富有的)对于他们能够到达的节点 也就是比他们贫穷的点, 如果 富有点的值小于 平穷点,那么将其替换,并且将该平穷点的入度减一 ,同时判断是否入度为0

class Solution:
    def loudAndRich(self, richer: List[List[int]], quiet: List[int]) -> List[int]:
        n = len(quiet)
        deg = [0]*n
        res = [i for i in range(n)]
        
        dic = defaultdict(list)
        for rich,poor in richer:
            dic[rich].append(poor)
            deg[poor] +=1
    
        q = []
        for x in range(n):
            if deg[x] == 0:
                q.append(x)
        while q:
            rich = q[0]
            del q[0]
            for poor in dic[rich]:
                if quiet[res[rich]] < quiet[res[poor]]:
                    res[poor] = res[rich]
                deg[poor] -= 1
                if deg[poor] == 0:
                    q.append(poor)
        
        return res

1603. 设计停车系统

在这里插入图片描述

用一个list去记录当前的大中小三种停车位的个数然后判断

class ParkingSystem:

    def __init__(self, big: int, medium: int, small: int):
        self.lis = [big,medium,small]

    def addCar(self, carType: int) -> bool:

        if self.lis[carType-1] >0:
            self.lis[carType-1] -=1
            return True
        return False

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-16 17:56:08  更:2021-12-16 17:57:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 16:55:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码