力扣labuladong——一刷day76

news/2024/7/20 20:41:34 标签: leetcode, 算法, 深度优先, java, 数据结构

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、力扣797. 所有可能的路径
  • 二、力扣277.搜寻名人


前言


图这种数据结构有一些比较特殊的算法,比如二分图判断,有环图无环图的判断,拓扑排序,以及最经典的最小生成树,单源最短路径问题,更难的就是类似网络流这样的问题。

一、力扣797. 所有可能的路径

java">class Solution {
    List<List<Integer>> res = new ArrayList<>();
    List<Integer> path = new ArrayList<>();
    public List<List<Integer>> allPathsSourceTarget(int[][] graph) {
        dfs(graph,0);
        return res;
    }
    public void dfs(int[][] graph, int cur){
        if(cur == graph.length-1){
            path.add(cur);
            res.add(new ArrayList<>(path));
            path.remove(path.size()-1);
            return;
        }
        for(int i = 0; i < graph[cur].length; i ++){
            path.add(cur);
            dfs(graph, graph[cur][i]);
            path.remove(path.size()-1);
        }
    }
}

二、力扣277.搜寻名人

java">int findCelebrity(int n) {
    if (n == 1) return 0;
    // 将所有候选人装进队列
    LinkedList<Integer> q = new LinkedList<>();
    for (int i = 0; i < n; i++) {
        q.addLast(i);
    }
    // 一直排除,直到只剩下一个候选人停止循环
    while (q.size() >= 2) {
        // 每次取出两个候选人,排除一个
        int cand = q.removeFirst();
        int other = q.removeFirst();
        if (knows(cand, other) || !knows(other, cand)) {
            // cand 不可能是名人,排除,让 other 归队
            q.addFirst(other);
        } else {
            // other 不可能是名人,排除,让 cand 归队
            q.addFirst(cand);
        }
    }

    // 现在排除得只剩一个候选人,判断他是否真的是名人
    int cand = q.removeFirst();
    for (int other = 0; other < n; other++) {
        if (other == cand) {
            continue;
        }
        // 保证其他人都认识 cand,且 cand 不认识任何其他人
        if (!knows(other, cand) || knows(cand, other)) {
            return -1;
        }
    }
    // cand 是名人
    return cand;
}

http://www.niftyadmin.cn/n/5280263.html

相关文章

git 项目过大问题解决

当项目过大时&#xff0c;git clone时会出现error: RPC failed; HTTP curl The requested URL returned error: Gateway Time-out的问题 解决方法很简单&#xff0c;在git clone时加上--depth1即可解决 克隆的项目只包含最近的一次commit的一个分支&#xff0c;体积很小&#x…

Java中的Stream流收集器

目录 1、归约和汇总 2、分组 3、分区 4、理解收集器接口 Java 中 Stream 流用来帮助处理集合&#xff0c;类似于数据库中的操作。 在 Stream 接口中&#xff0c;有一个抽象方法 collect&#xff0c;你会发现 collect 是一个归约操作&#xff08;高级规约&#xff09;&#…

安全基础~实战应用

文章目录 HTTP请求头应用X-Forwarded-ForHTTP动作练习(修改请求方式)浏览器信息伪造(修改User-Agent)来源请求伪造(referer应用) 密码的应用SQL注入漏洞测试(前部分)PHP_encrypt_1(ISCCCTF) XShell连接Linxu连接Windows连接 HTTP请求头应用 X-Forwarded-For 原理作用 一般的…

SpringTask简单使用

SpringTask **cron表达式在线生成器&#xff1a;**https://www.bejson.com/othertools/cron/ **阿里云开发者社区手册&#xff1a;**https://developer.aliyun.com/article/942392 Demo演示 创建SpringBoot项目&#xff0c;在启动项上加上EnableScheduling import org.spr…

LSTM和GRU vs 普通的循环神经网络RNN

1、考虑下列三种情况下&#xff0c;对比一下普通RNN的表现和LSTM和GRU表现&#xff1a; &#xff08;1&#xff09;早期观测值对预测未来观测者具有非常重要的意义。 考虑一个极端情况&#xff0c;其中第一个观测值包含一个校验和&#xff0c; 目标是在序列的末尾辨别校验和是…

「Verilog学习笔记」自动售卖机

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1nsmodule sale(input clk ,input rst_n ,input sel ,//sel0,5$dranks,sel1,10&$drinksinput …

【NI-RIO入门】NI CompactRIO waveform library

于NI KB摘录 此库集成了host、fgpa、rt在RIO硬件上采集波形的范例项目&#xff0c;其中​所有​数据和​采集​VI​和​都​针对​NI RIO​平台​进行​了​优​化&#xff0c;​融合了业界最佳的工程实践。​​您​也可以​在这些​范​例​的基础进行修改&#xff0c;从而​快…

JavaScript 对象和 JSON 字符串的区别

JavaScript 对象和 JSON 字符串是两种不同的数据表示形式&#xff0c;它们有以下区别&#xff1a; 语法格式&#xff1a;JavaScript 对象是 JavaScript 语言中的一种数据类型&#xff0c;使用花括号 {} 包裹&#xff0c;属性和值之间使用冒号 : 分隔&#xff0c;并且使用逗号 …