3147. 从魔法师身上吸取的最大能量

题目 在神秘的地牢中,n 个魔法师站成一排。每个魔法师都拥有一个属性,这个属性可以给你提供能量。有些魔法师可能会给你负能量,即从你身上吸取能量。 你被施加了一种诅咒,当你从魔法师 i 处吸收能量后,你将被立即传送到魔法师 (i + k) 处。这一过程将重复进行,直到你到达一个不存在 (i + k) 的魔法师为止。 换句话说,你将选择一个起点,然后以 k 为间隔跳跃,直到到达魔法师序列的末端,在过程中吸收所有的能量。 给定一个数组 energy 和一个整数k,返回你能获得的 最大 能量。 示例 1: 输入: energy = [5,2,-10,-5,1], k = 3 输出: 3 解释:可以从魔法师 1…

3494. 酿造药水需要的最少总时间

题目 给你两个长度分别为 n 和 m 的整数数组 skill 和 mana 。 在一个实验室里,有 n 个巫师,他们必须按顺序酿造 m 个药水。每个药水的法力值为 mana[j],并且每个药水 必须 依次通过 所有 巫师处理,才能完成酿造。第 i 个巫师在第 j 个药水上处理需要的时间为 timeij = skill[i] * mana[j]。 由于酿造过程非常精细,药水在当前巫师完成工作后 必须 立即传递给下一个巫师并开始处理。这意味着时间必须保持 同步,确保每个巫师在药水到达时 马上 开始工作。 返回酿造所有药水所需的 最短 总时间。 示例 1: 输入:…

2300. 咒语和药水的成功对数

题目 给你两个正整数数组 spells 和 potions ,长度分别为 n 和 m ,其中 spells[i] 表示第 i 个咒语的能量强度,potions[j] 表示第 j 瓶药水的能量强度。 同时给你一个整数 success 。一个咒语和药水的能量强度 相乘 如果 大于等于 success ,那么它们视为一对 成功 的组合。 请你返回一个长度为 n 的整数数组 pairs,其中 pairs[i] 是能跟第 i 个咒语成功组合的 药水 数目。 示例 1: 输入:spells = [5,1,3], potions…

1488. 避免洪水泛滥

题目 你的国家有无数个湖泊,所有湖泊一开始都是空的。当第 n 个湖泊下雨前是空的,那么它就会装满水。如果第 n 个湖泊下雨前是 满的 ,这个湖泊会发生 洪水 。你的目标是避免任意一个湖泊发生洪水。 给你一个整数数组 rains ,其中: * rains[i] > 0 表示第 i 天时,第 rains[i] 个湖泊会下雨。 * rains[i] == 0 表示第 i 天没有湖泊会下雨,你可以选择 一个 湖泊并 抽干 这个湖泊的水。 请返回一个数组 ans ,满足: * ans.length == rains.length * 如果 rains[i] >…

417. 太平洋大西洋水流问题

题目 有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界,而 **“大西洋”**处于大陆的右边界和下边界。 这个岛被分割成一个由若干方形单元格组成的网格。给定一个 m x n 的整数矩阵 heights , heights[r][c] 表示坐标 (r, c) 上单元格 高于海平面的高度 。 岛上雨水较多,如果相邻单元格的高度 小于或等于 当前单元格的高度,雨水可以直接向北、南、东、西流向相邻单元格。水可以从海洋附近的任何单元格流入海洋。 返回网格坐标 result 的 2D 列表 ,其中 result[i] = [ri, ci] 表示雨水从单元格…

11. 盛最多水的容器

题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 示例 1: 输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,…

Golang - 匿名函数

在 Go 中,匿名函数(Anonymous Function),也称为函数字面量,是指在代码中直接定义的、没有函数名的函数。它们是一等公民,意味着可以像任何其他类型(如 int、string)的值一样被使用。 基本语法 func(参数列表) (返回值列表) { // 函数体 } 常见用法 a) 直接调用(立即执行函数 IIFE) 定义后立即用 () 调用,通常用于创建一个临时的作用域。 func main() { // 定义并立即调用 func() { fmt.Println("这是一个直接调用的匿名函数!") }() } b) 赋值给变量 可以将匿名函数赋值给一个变量,然后通过这个变量来调用它。 func main() { // 将匿名函数赋值给变量 add add := func(a, b int)…

Golang - 并发

Goroutine Goroutine是一个轻量级的独立任务执行单元。 想象一下你是一个项目经理(主程序 main 函数),你有很多任务需要完成。 * 传统方式(没有并发): 你必须亲力亲为,做完任务A,才能开始任务B,再开始任务C。效率很低。 * 传统多线程方式: 你可以雇佣几个全职员工(操作系统线程)。每个员工都很能干,但雇佣和管理他们(创建、销毁、切换)的成本很高,比如要给他们配独立的办公室、电脑等(独立的内存堆栈,系统资源开销大)。你雇不了太多员工。 * Go 协程方式: 你雇佣了一个总管(Go 运行时),然后你只需要把任务写在小纸条上,交给总管。总管手下有一群临时工(Goroutines),他们非常轻量,只需要一张小板凳就能坐下干活(内存占用极小,通常只有几 KB)。你下达一个指令 go doSomething(),总管就会派一个临时工去做。成千上万个临时工对他来说都不是问题,管理成本极低。 创建 Goroutine…