热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

暑假算法训练营报名

本文主要分享【暑假算法训练营报名】,技术文章【暑假算法7.25,Day24】为【小十一吖】投稿,如果你遇到算法相关问题,本文相关知识或能到你。暑假算法训练营报名暑假算法7.25,Day24图论

本文主要分享【暑假算法训练营报名】,技术文章【暑假算法7.25,Day24】为【小十一吖】投稿,如果你遇到算法相关问题,本文相关知识或能到你。

暑假算法训练营报名

暑假算法7.25,Day24

图论,背模板代码。。

第一题

网络延迟时间

class Solution {
   
    int N=105;
    int[][] g=new int [N][N];
    int[] dist=new int[N];
    boolean[] st=new boolean[N];
    public int networkDelayTime(int[][] times, int n, int k) {
   
        for(int i=0;i<=n;i++){
   
            Arrays.fill(g[i],0x3f3f3f3f);
        }
        for(int[] nums:times){
   
            int a=nums[0];
            int b=nums[1];
            int c=nums[2];
            g[a][b]=c;
        }
        return dijkstra(n,k);
    }
    int dijkstra(int n,int k){
   
        Arrays.fill(dist,0x3f3f3f3f);
        dist[k]=0;
        for(int i=0;i<n;i++){
   
            int t=-1;
            for(int j=1;j<=n;j++){
   
                if(!st[j]&&(t==-1||dist[j]<dist[t])){
   
                    t=j;
                }
            }
            st[t]=true;
            for(int j=1;j<=n;j++){
   
                dist[j]=Math.min(dist[j],dist[t]+g[t][j]);
            }
        }
        int res=0;
        for(int j=1;j<=n;j++){
   
            if(dist[j]==0x3f3f3f3f){
   
                return -1;
            }
            res=Math.max(res,dist[j]);
        }
        return res;
    }
}

请添加图片描述

第二题

K站中转内最便宜的航班

class Solution {
   
    //有边数限制使用贝尔曼夫算法
    int N=100;
    int M=5010;
    List<Node> list=new ArrayList<>();
    int[] dist=new int[N];
    int[] backup=new int[N];
    int n,m,k,src,dst;
    public int findCheapestPrice(int n, int[][] flights, int src, int dst, int k) {
   
        this.n=n;
        this.m=flights.length;
        //k次中转是k条边
        this.k=k+1;
        this.src=src;
        this.dst=dst;
        for(int[] s:flights){
   
            int a=s[0];
            int b=s[1];
            int w=s[2];
            list.add(new Node(a,b,w));
        }
        int t=bellman_ford();
        return t;
    }
    int bellman_ford(){
   
        Arrays.fill(dist,0x3f3f3f3f);
        dist[src]=0;
        for(int i=0;i<k;++i){
   
            backup=Arrays.copyOfRange(dist,0,N);
            for(int j=0;j<m;++j){
   
                int a=list.get(j).a;
                int b=list.get(j).b;
                int w=list.get(j).w;
                dist[b]=Math.min(dist[b],backup[a]+w);
            }
        }
        if(dist[dst]>0x3f3f3f3f/2) return -1;
        else return dist[dst];
    }
}
class Node{
   
    int a,b,w;
    public Node(int a, int b, int w) {
   
            this.a = a;
            this.b = b;
            this.w = w;
    }
}

请添加图片描述

第三题

到达角落需要移除的障碍物的最小数目

struct node{
   
    int x,y;
    int d;
    bool operator<(const node&a)const{
   
        return d>a.d;
    }
};
class Solution {
   
public:
    int minimumObstacles(vector<vector<int>>& grid) {
   
        int m = grid.size(), n = grid[0].size();
        vector<vector<int>> dirs{
   {
   -1, 0}, {
   0, 1}, {
   1, 0}, {
   0, -1}};
        vector<vector<int>> visited(m, vector<int>(n, 0));
        vector<vector<int>> dis(m, vector<int>(n, INT_MAX));
        visited[0][0] = 0;
        dis[0][0]=0;
        priority_queue<node> q;
        q.push((node){
   0, 0, 0});
        while (!q.empty()) {
   
            auto t = q.top(); q.pop();
            if(!visited[t.x][t.y]) {
   
                visited[t.x][t.y]=1;
                for (auto dir : dirs) {
   
                    int x = t.x + dir[0], y = t.y + dir[1];
                    if (x < 0 || x >= m || y < 0 || y >= n) continue;
                    if(dis[x][y]>dis[t.x][t.y]+grid[x][y]){
   
                        dis[x][y]=dis[t.x][t.y]+grid[x][y];
                        q.push((node){
   x,y,dis[x][y]});
                    }
                }
            }
        }
        return dis[m-1][n-1];
    }
};

请添加图片描述

本文《暑假算法7.25,Day24》版权归小十一吖所有,引用暑假算法7.25,Day24需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • Android 自定义 RecycleView 左滑上下分层示例代码
    为了满足项目需求,需要在多个场景中实现左滑删除功能,并且后续可能在列表项中增加其他功能。虽然网络上有很多左滑删除的示例,但大多数封装不够完善。因此,我们尝试自己封装一个更加灵活和通用的解决方案。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Exce ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
author-avatar
手机用户2602897795
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有