首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >2026-02-12:完成一个任务的最早时间。用go语言,给你一个二维整数数组 tasks,数组中每个元素 [s_i, t_i] 表示一个任务在时间点 s_i 开

2026-02-12:完成一个任务的最早时间。用go语言,给你一个二维整数数组 tasks,数组中每个元素 [s_i, t_i] 表示一个任务在时间点 s_i 开

作者头像
福大大架构师每日一题
发布2026-03-04 18:54:12
发布2026-03-04 18:54:12
290
举报

2026-02-12:完成一个任务的最早时间。用go语言,给你一个二维整数数组 tasks,数组中每个元素 [s_i, t_i] 表示一个任务在时间点 s_i 开始,并需要 t_i 个时间单位才能结束。

请找出一个最小的时间点,使得在该时刻或之前至少有一个任务已经完成。

换句话说,求能首次出现任务完成的最早时间。

1 <= tasks.length <= 100。

tasks[i] = [si, ti]。

1 <= si, ti <= 100。

输入: tasks = [[1,6],[2,3]]。

输出: 5。

解释:

第一个任务从时间 t = 1 开始,并在 1 + 6 = 7 时完成。第二个任务在时间 t = 2 开始,并在 2 + 3 = 5 时完成。因此,最早完成的任务在时间 5。

题目来自力扣3683。

🔢 计算过程分步解析

  1. 1. 初始化答案变量 程序首先将 ans 初始化为一个非常大的整数(math.MaxInt),确保任何任务的完成时间都会比这个初始值小,从而能被正确更新。
  2. 2. 遍历任务数组 代码通过循环依次处理 tasks 中的每一个任务。对于当前任务 t,它包含两个元素:t[0] 是开始时间 s_it[1] 是持续时间 t_i
  3. 3. 计算单个任务的完成时间 对于每个任务,计算其完成时间:completionTime = t[0] + t[1]
  4. 4. 更新最早完成时间 将计算出的 completionTime 与当前记录的最小值 ans 进行比较。如果 completionTime 更小,则用这个更小的值更新 ans。这样,在遍历结束后,ans 保存的就是所有任务完成时间中的最小值。
  5. 5. 返回结果 循环结束后,直接返回 ans 作为答案。

⏱️ 复杂度分析

  • 时间复杂度O(n)。 其中 n 是任务的数量(tasks.length)。算法只需要遍历任务数组一次,对每个任务执行常数时间(O(1))的操作(加法、比较),因此总时间复杂度与任务数量成线性关系。
  • 空间复杂度O(1)。 算法只使用了固定数量的额外变量(ans, 循环变量等),没有使用与输入数据规模(如任务数量 n)成正比的额外存储空间。

💎 总结

这个解决方案非常直接和高效。它抓住了问题的核心——任务的完成时间是其开始时间与持续时间之和,而最早完成时间就是所有完成时间中的最小值。通过一次遍历即可找到答案,无论在时间还是空间上都是最优的。

Go完整代码如下:

.

代码语言:javascript
复制
package main

import (
    "fmt"
    "math"
)

func earliestTime(tasks [][]int)int {
    ans := math.MaxInt
    for _, t := range tasks {
        ans = min(ans, t[0]+t[1])
    }
    return ans
}

func main() {
    tasks := [][]int{{1, 6}, {2, 3}}
    result := earliestTime(tasks)
    fmt.Println(result)
}
在这里插入图片描述
在这里插入图片描述

Python完整代码如下:

.

代码语言:javascript
复制
# -*-coding:utf-8-*-

from typing import List

def earliestTime(tasks: List[List[int]]) -> int:
    ans = float('inf')
    for t in tasks:
        ans = min(ans, t[0] + t[1])
    return ans

def main():
    tasks = [[1, 6], [2, 3]]
    result = earliestTime(tasks)
    print(result)

if __name__ == "__main__":
    main()
在这里插入图片描述
在这里插入图片描述

C++完整代码如下:

.

代码语言:javascript
复制
#include <iostream>
#include <vector>
#include <limits>
#include <algorithm>

using namespace std;

int earliestTime(vector<vector<int>>& tasks) {
    int ans = numeric_limits<int>::max();
    for (const auto& t : tasks) {
        ans = min(ans, t[0] + t[1]);
    }
    return ans;
}

int main() {
    vector<vector<int>> tasks = {{1, 6}, {2, 3}};
    int result = earliestTime(tasks);
    cout << result << endl;
    return0;
}
在这里插入图片描述
在这里插入图片描述

·


我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

·

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-02-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🔢 计算过程分步解析
  • ⏱️ 复杂度分析
  • 💎 总结
  • Go完整代码如下:
  • Python完整代码如下:
  • C++完整代码如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档