Golang - 堆的实现

接口要求 Go 的标准库 container/heap 定义了一个接口(heap.Interface),我们只需要让自己的数据类型满足这个接口,然后就可以使用 container/heap 包里提供的 Init, Push, Pop 等函数来对我们的数据进行堆操作。 核心就是实现 heap.Interface 接口。这个接口包含了 sort.Interface 的三个方法和它自己定义的两个方法。 heap.Interface 的定义如下: type Interface interface { sort.Interface // 包含了 Len(), Less(i, j int) bool, Swap(i, j int) Push(x any) // 在末尾添加元素 Pop() any…

407. 接雨水 II

题目 给你一个 m x n 的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。 示例 1: 输入: heightMap = [[1,4,3,1,3,2],[3,2,1,3,2,4],[2,3,3,2,3,1]] 输出: 4 解释: 下雨后,雨水将会被上图蓝色的方块中。总的接雨水量为1+2+1=4。 示例 2: 输入: heightMap = [[3,3,3,3,3],[3,…

Class 4 - Convolutional Neural Networks cont.

1.ImageNet挑战赛与深度学习的革命 1.1. K-最近邻(K-Nearest Neighbors, K-NN)算法 1.1.1. CIFAR-10 数据集 CIFAR-10数据集 * 它包含60000张非常小的彩色图片(32×32 像素)。 * 这些图片共分为10个类别,例如飞机、汽车、鸟、猫等。 这个数据集在机器学习领域非常经典,可以把它想象成是图像分类任务的“新手村”。我们的目标就是训练一个模型,让它能够正确识别出任意一张CIFAR-10图片属于哪个类别。 K-NN的思想非常直观,可以概括为“近朱者赤,近墨者黑”。要判断一个新样本(测试图片)属于哪个类别,我们不进行复杂的“学习”,而是直接在所有已知样本(训练图片)中找到和它最相似的K个邻居,然后采取“少数服从多数”的原则,看这K个邻居中哪个类别的数量最多,就把新样本归为那一类。 要实现这个算法,有两个关键问题需要解决: 1. 如何衡量两张图片之间的“…

3100. 换水问题 II

题目 给你两个整数 numBottles 和 numExchange 。 numBottles 代表你最初拥有的满水瓶数量。在一次操作中,你可以执行以下操作之一: * 喝掉任意数量的满水瓶,使它们变成空水瓶。 * 用 numExchange 个空水瓶交换一个满水瓶。然后,将 numExchange 的值增加 1 。 注意,你不能使用相同的 numExchange 值交换多批空水瓶。例如,如果 numBottles == 3 并且 numExchange == 1 ,则不能用 3 个空水瓶交换成 3 个满水瓶。 返回你 最多 可以喝到多少瓶水。 示例 1: 输入:numBottles = 13, numExchange = 6 输出:15 解释:上表显示了满水瓶的数量、空水瓶的数量、…

1518. 换水问题

题目 超市正在促销,你可以用 numExchange 个空水瓶从超市兑换一瓶水。最开始,你一共购入了 numBottles瓶水。 如果喝掉了水瓶中的水,那么水瓶就会变成空的。 给你两个整数 numBottles 和 numExchange ,返回你 最多 可以喝到多少瓶水。 示例 1: 输入:numBottles = 9, numExchange = 3 输出:13 解释:你可以用 3 个空瓶兑换 1 瓶水。 所以最多能喝到 9 + 3 + 1 = 13 瓶水。 示例 2: 输入:numBottles = 15, numExchange = 4 输出:19 解释:你可以用 4…

Class 5 - Unconstrained Case

1. 最优性条件 (Optimality Condition) 1.1. 优化问题 任何一个优化问题,无论是在机器学习、金融、还是工程领域,我们都可以用三个核心组件来描述它: * 目标函数 (Objective Function) $f:\mathbb{R}^n\mapsto\mathbb{R}$  这是我们希望最小化(或最大化)的那个函数。在机器学习中,这通常是损失函数 (Loss Function),比如衡量模型预测值与真实值差距的均方误差。 * 优化变量 (Optimization Variable) $x\in\mathbb{R}^n$ 这是我们可以调整和控制的变量,以期改变目标函数的值。在机器学习中,$x$ 通常是模型的参数或权重 (weights)。我们训练模型的过程,就是在寻找一组最优的权重 $x$ 来让损失函数 $f(x)…

2221. 数组的三角和

题目 给你一个下标从 0 开始的整数数组 nums ,其中 nums[i] 是 0 到 9 之间(两者都包含)的一个数字。 nums 的 三角和 是执行以下操作以后最后剩下元素的值: 1. nums 初始包含 n 个元素。如果 n == 1 ,终止 操作。否则,创建 一个新的下标从 0 开始的长度为 n - 1 的整数数组 newNums 。 2. 对于满足 0 <= i < n - 1 的下标 i…

Class 5 - Probability and Statistics in AI

1.概率论基础 (Probability Basics) 1.1. 基本概念 在做任何随机试验之前,我们首先要明确所有可能出现的结果。把这些所有可能的结果收集到一个集合里,这个集合就是样本空间,我们用大写的希腊字母 $Ω$ (Omega) 来表示。 光有所有可能性的列表还不够,我们还需要知道每一种可能性发生的概率有多大。一个概率空间,或者叫概率模型,就是在样本空间的基础上,为每一个样本点 $ω$ 都赋予一个概率值 $P(ω)$。 这个概率值的分配必须遵守两条基本法则: * 非负性与归一性:任何一个基本结果的概率 P(ω) 必须在0和1之间,即 $0≤P(ω)≤1$。 * 完备性:所有样本点(基本结果)的概率加起来必须等于1,这代表着试验发生时,必然有且只有一个结果会出现。用公式表示就是: $$\sum_{\omega\in\Omega}P(\omega)=1$…