Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2022-06-25:给定一个正数n, 表示有0~n-1号任务, 给定一个长度为n的数组time,time[i]表示i号任务做完的时间, 给定一个二维数组mat

2022-06-25:给定一个正数n, 表示有0~n-1号任务, 给定一个长度为n的数组time,time[i]表示i号任务做完的时间, 给定一个二维数组mat

原创
作者头像
福大大架构师每日一题
发布于 2022-06-25 12:39:41
发布于 2022-06-25 12:39:41
4070
举报

2022-06-25:给定一个正数n, 表示有0~n-1号任务,

给定一个长度为n的数组time,timei表示i号任务做完的时间,

给定一个二维数组matrix,

matrixj = {a, b} 代表:a任务想要开始,依赖b任务的完成,

只要能并行的任务都可以并行,但是任何任务只有依赖的任务完成,才能开始。

返回一个长度为n的数组ans,表示每个任务完成的时间。

输入可以保证没有循环依赖。

来自美团。3.26笔试。

答案2022-06-25:

拓扑排序基础上做动态规划。

代码用rust编写。代码如下:

代码语言:rust
AI代码解释
复制
fn main() {
    let mut time:Vec<i32>=vec![5,3,4,2,7];
    let mut matrix:Vec<Vec<i32>>=vec![vec![0,1],vec![0,2],vec![1,2],vec![3,1],vec![4,0]];
    let ans = finish_time(5,&mut time,&mut matrix);
    println!("ans = {:?}", ans);
}

fn finish_time(n: i32, time: &mut Vec<i32>, matrix: &mut Vec<Vec<i32>>) -> Vec<i32> {
    let mut nexts: Vec<Vec<i32>> = vec![];
    for i in 0..n {
        nexts.push(vec![]);
    }
    let mut in0: Vec<i32> = vec![];
    for _ in 0..n {
        in0.push(0);
    }
    for line in matrix.iter() {
        nexts[line[1] as usize].push(line[0]);
        in0[line[0] as usize] += 1;
    }
    let mut zero_in_queue: Vec<i32> = vec![];
    let mut ans: Vec<i32> = vec![];
    for _ in 0..n {
        ans.push(0);
    }
    for i in 0..n {
        if in0[i as usize] == 0 {
            zero_in_queue.push(i);
        }
    }
    while zero_in_queue.len() > 0 {
        let cur = zero_in_queue[0];
        zero_in_queue.remove(0);
        ans[cur as usize] += time[cur as usize];
        for next in nexts[cur as usize].iter() {
            ans[*next as usize] = get_max(ans[*next as usize], ans[cur as usize]);
            in0[*next as usize] -= 1;
            if in0[*next as usize] == 0 {
                zero_in_queue.push(*next);
            }
        }
    }
    return ans;
}

fn get_max<T: Clone + Copy + std::cmp::PartialOrd>(a: T, b: T) -> T {
    if a > b {
        a
    } else {
        b
    }
}

执行结果如下:

在这里插入图片描述
在这里插入图片描述

左神java代码

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
定期备份数据库:基于 Shell 脚本的自动化方案
数据库备份这件事,说实话,我一直没怎么上心。平时服务器跑得好好的,谁会想着备份呢?直到某天真出问题了,才意识到自己平时有多“懒”。
苏琢玉
2025/03/11
1630
定期备份数据库:基于 Shell 脚本的自动化方案
利用 Python 实现高效数据备份与恢复:策略、优化与自动化实践
利用Python进行数据备份与恢复是一种常见的做法。对于数据库,你可以使用Python中的数据库连接库(如sqlite3、SQLAlchemy等)连接到数据库,然后执行备份操作,将数据库的内容保存到一个备份文件中。对于文件系统,你可以使用Python的os和shutil模块来复制文件和目录,实现文件系统的备份。备份时,通常需要考虑备份的频率、存储位置、数据压缩和加密等问题。在恢复数据时,你可以编写Python脚本来自动化恢复过程,以便在需要时快速恢复数据。定期测试备份数据的完整性和可恢复性也是很重要的。
一键难忘
2024/08/03
3610
自动化备份脚本开发指南
本脚本支持参数化配置数据库连接信息、备份存储路径及过期文件清理策略,实现以下核心功能:
IT咸鱼
2025/05/20
1030
自动化备份脚本开发指南
centos实现mysql定时备份(单机)
一只牛博
2025/05/30
1170
mysql数据库备份的三种方式
mysqldump备份 Mysqldump是mysql自带工具。备份出来的文件是一个可以直接倒入的sql脚本。该sql文件中实际上包含了多个CREATE 和INSERT语句,使用这些语句可以重新创建表和插入数据。 #!/bin/bash aiserver_bak() { user="root" passwd="xxxx" db_name="ai_server" backup_path="/data/mysql-backup/ai_server" date=$(date +"%Y%m%d%H%M%S") um
章工运维
2023/05/19
7820
Linux-MySQL数据备份和定时清理
最近接了个新需求,需要将我们经常使用的几个数据库,MySQL、influxdb在Linux系统上实现定时自动备份,比如每天备份一次,间隔31天清理31天之前备份的数据,研究了一下,准备先从MySQL实现。
框架师
2021/08/05
2K0
腾讯云CodeBuddy初体验
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴”;
大侠之运维
2025/04/30
1701
定时备份脚本分享(网站数据和数据库数据)
备份是我们运维人员最基本的日常工作,做好备份是稳定运维的一个重要环节。下面分享两个使用过的简单备份脚本: 1)网站数据备份 将网站数据/var/www/vhost/www.hqsb.com和/var/www/vhost/www.huanqiu.com分别备份到: /Data/code-backup/www.hqsb.com和/Data/code-backup/www.huanqiu.com下。 [root@huanqiu_web5 code-backup]# cat web_code_backup.sh #
洗尽了浮华
2018/01/23
1.8K0
腾讯云代码助手 CodeBuddy初体验
大家好,我是杜金房,是一个老码农。今天跟大家聊聊AI辅助编程——我使用CodeBuddy的体验。
杜金房
2025/05/13
4430
腾讯云代码助手 CodeBuddy初体验
记一次数据库删表事件
目前我司正处于一种混乱的开发环境中; 对于数据库字段增修都是开发人员直上服务器数据库修改(我多次强调); 我未入职前,是直接通过SFTP连接服务器,对项目进行开发和修改(话说造成代码覆盖都不知道是谁干的,多次建议开发使用Git); 虽然对开发规范有所改变,但还是因为不可抗力因素无法执行,也是造成我最近想跳槽的原因;
高久峰
2023/09/18
2290
mysql常用的脚本集合
章工运维
2024/01/12
2670
Shell编程-案例(一)
作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
运维小路
2024/11/01
1080
Shell编程-案例(一)
【AlmaLinux+Docker MySQL 实战】:自动化备份与恢复(备份策略·脚本编写·恢复演练)
作为 DBA,万一一场“你以为的备份”没有发生,就可能让业务在一秒内崩塌。怎样才能保证备份脚本一键跑起、有问题及时知晓、恢复流程随时可演练?这篇文章将从“备份策略”“脚本编写”到“恢复演练”三个知识节点,带你一步一步彻底搞定 MySQL 自动化备份与恢复。
IT咸鱼
2025/06/09
860
【AlmaLinux+Docker MySQL 实战】:自动化备份与恢复(备份策略·脚本编写·恢复演练)
shell脚本实现GrayLog配置的定期备份
众所周知GrayLog的配置都保存在MongoDB数据库,这时我们只需备份GrayLog的MongoDB即可
yuanfan2012
2023/09/06
4030
shell脚本实现GrayLog配置的定期备份
mongo自动备份脚本与恢复
二、新建MongoDB数据库备份脚本(/data/mongodb_bak/MongoDB_bak.sh) 脚本如下:
拓荒者
2019/06/18
1.2K0
Elasticsearch基于nfs备份环境搭建
从事DBA工作多年,一直没有给大家留下东西。昨天看了铭毅天下老师的文章,感觉我也要写点东西。所以立志每天写一篇文章,在社区留下点痕迹。本文主要分两部分,一部分为nfs环境的搭建,下次会介绍下hdfs环境的搭建;第二部分是关于索引和全库备份方案,详细请查看下文。
雨夜v1
2021/03/12
9490
Elasticsearch基于nfs备份环境搭建
矛与盾-数据库被攻击恢复方案
开发者通常会购买自己的服务器去搭建一套自己的开发环境,由于服务器防护等级较低、弱密码或者疏于防护,服务器更容易遭到攻击者攻击。 数据库被攻击是一种非常常见的网络安全问题,黑客通过利用漏洞或弱密码等手段进入您的服务器并获取敏感数据,这些数据可能包括个人身份信息、财务信息和其他敏感信息。黑客可能会将您的数据窃取、删除或加密,使您无法访问或使用它们。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/62034800964a4ff2a60a2891064a770b.png
关忆北.
2023/10/11
2480
矛与盾-数据库被攻击恢复方案
【MySQL基础】数据库的备份与还原
https://blog.csdn.net/2301_80220607/category_12971838.html?spm=1001.2014.3001.5482
GG Bond1
2025/06/08
2300
centos下mysql自动备份
也许需要重启crontab 启用命令:/sbin/service crond restart
庞小明
2019/05/25
1.2K0
AI写代码是什么体验?我试了腾讯云CodeBuddy Craft
软件开发中,代码库日益庞大复杂,新技术层出不穷,学习成本居高不下。常常陷入繁琐的重复性劳动,为调试一个难以捉摸的bug绞尽脑汁,或者在理解他人代码时感到力不从心。这些痛点不仅消耗了宝贵的开发时间,也在一定程度上影响了创新的步伐和项目的交付效率。
Lion 莱恩呀
2025/05/21
4720
AI写代码是什么体验?我试了腾讯云CodeBuddy Craft
推荐阅读
相关推荐
定期备份数据库:基于 Shell 脚本的自动化方案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档