当前位置: 首页>编程语言>正文

平地惊雷,GPT-4o 凌晨震撼发布

GPT-4o

今日凌晨,OpenAI 2024 年春季发布会召开,OpenAI 通过短短 28 分钟的发布会,发布了「再次震惊世界」的 GPT-4o,其中 o 是指 omni(全能)的意思。

一款**全新交互(支持 文本/音频/视频 组合作为输入输出)**的、**快速(响应速度为 GTP-4 Turbo 的 2倍)**的、能感受人类情感的、免费的模型。

为什么是今天?

因为明天(5 月 15 号)就是 Google 的 I/0 大会,网传 Google 打算在会上公布大模型的最新进展:以 Gemini 为基础,名为 Pixie 的个人助手。

这下好了,Google 的关注度必然下降。

其实 OpenAI 对 Google 的狙击,不是第一次发生了。

早在 2023 年 12 月,谷歌计划上线 Gemini 时,OpenAI 便在 11 月抢先举办了首届开发者大会。

有过"被狙击"经验的 Google 这次没有光愣着,抓紧在官号中放出 Demo 的实时演示视频:

平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_算法,第1张

但和 GPT-4o 相比,估计够呛,正如该帖子下的一位外国网友的留言:

Sorry Google but we got it one day earlier(对不起谷歌,但我们一天前已经得到这个了)

更加值得期待的是,在该发布会的前一天,Apple 和 OpenAI 的合作已宣布达成。

虽然合作方式尚未公布,但大概率发生的事应该是:OpenAI 的技术将会在这一次的苹果新品中集中亮相。

现在我们可以一同期待,这位像个真实人类一样,可以被随意打断,可以通过语气猜测用户情绪,支持端到端运行,使用体验和功能都无比强大的 GPT-4o 成为我们的新 Siri 了。

我不想再强调有多少技术或者岗位会被革命,千言万语的描述汇聚成一个单词:her。

平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Math_02,第2张

这也是 OpenAI 创始人、CEO 山姆·奥特曼在发布会后,发的帖子内容。

意在致敬在 2014 年获得奥斯卡最佳原创剧本的电影《Her》,由 斯派克·琼斯 执导和编剧的科幻爱情电影,讲述了一个孤独的男人和一个人工智能操作系统之间的不寻常的恋情。

...

回归主线。

来一道和「Apple」相关的算法题。

题目描述

平台:LeetCode

题号:754

在一根无限长的数轴上,你站在 0 的位置。终点在 target 的位置。

你可以做一些数量的移动 numMoves :

  • 每次你可以选择向左或向右移动。
  • i 次移动(从  i == 1 开始,到 i == numMoves),在选择的方向上走 i 步。

给定整数 target,返回 到达目标所需的 最小 移动次数(即最小 numMoves ) 。

示例 1:

输入: target = 2

输出: 3

解释:
第一次移动,从 0 到 1 。
第二次移动,从 1 到 -1 。
第三次移动,从 -1 到 2 。

示例 2:

输入: target = 3

输出: 2

解释:
第一次移动,从 0 到 1 。
第二次移动,从 1 到 3 。

提示:

  • 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_后端_03,第3张
  • 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Google_04,第4张

数学

提示一:数轴上的任意点都以起点(平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_前端_05,第5张

由于题目没有限制我们「不能到达哪些点」以及「出发的起始方向」,因此以起点为中心的左右两边对称。

即:左边所能到达任意一个点,都能通过调整所达路径的方向来将终点调整到右边。

同时由于起点是一个特殊的位置 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_前端_05,第5张

提示二:先往靠近 target 的方向移动,到达或越过 target 的时候则停止

只考虑 target 为正的情况,我们假定起始先往靠近 target 的方向移动(即所有步数均为正值),根据是「到达」还是「越过」target 位置分情况讨论:

  • 若能直接到达 target,此时消耗的必然是最小步数,可直接返回;
  • 若越过了 target,假设此时消耗的步数为 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Google_07,第7张,所走的距离为 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Google_08,第8张,我们可以考虑是否需要增加额外步数来到达 target

提示三:越过 target 时,如何不引入额外步数

若不引入额外步数,意味着我们需要将此前某些移动的方向进行翻转,使得调整后的 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Google_09,第9张

我们假设需要调整的步数总和为 tot,则有 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Google_10,第10张,变形可得 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Math_11,第11张

若想满足上述性质,需要确保能找到这样的 tot,即 tot 合法,

不难推导出当 disttarget 差值为「偶数」时(两者奇偶性相同),我们可以找到这样的 tot,从而实现不引入额外步数来到达 target 位置。

由于我们的 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_前端_12,第12张 是由数列 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Google_13,第13张 累加而来,因此必然能够在该数列 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_后端_14,第14张 中通过「不重复选择某些数」来凑成任意一个小于等于 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_前端_12,第12张

提示四:越过 target 时,如何尽量减少引入额外步数

disttarget 差值不为「偶数」时,我们只能通过引入额外步数(继续往右走)来使得,两者差值为偶数。

可以证明,最多引入步数不超过 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_后端_16,第16张 步,可使用得两者奇偶性相同,即不超过 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_后端_16,第16张

根据 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Google_07,第7张平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_后端_16,第16张

  • 余数为 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_前端_05,第5张,即 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_前端_21,第21张,由于 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_算法_22,第22张,其中一数为偶数,平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_前端_12,第12张
  • 余数为 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Google_24,第24张,即 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Google_25,第25张,由于 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_后端_26,第26张,两个奇数相乘为奇数,平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_前端_12,第12张
  • 余数为 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Math_28,第28张,即 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Math_29,第29张平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Google_30,第30张,两个奇数相乘为奇数,平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_前端_12,第12张
  • 余数为 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_后端_32,第32张,即 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_后端_33,第33张平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_后端_34,第34张,其中一数为偶数,平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_前端_12,第12张

因此在越过 target 后,最多引入不超过 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_后端_16,第16张 步可使得 disttarget 奇偶性相同。

提示五:如何不通过「遍历」或「二分」的方式找到一个合适的 k 值,再通过不超过 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_后端_16,第16张

我们期望找到一个合适的 k 值,使得 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Google_38,第38张,随后通过增加 k 值来找到答案。

利用求和公式 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Google_39,第39张,我们可以设定 平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_算法_40,第40张 为起始值,随后逐步增大 k 值,直到满足「disttarget 奇偶性相同」。

Java 代码:

class Solution {
    public int reachNumber(int target) {
        if (target < 0) target = -target;
        int k = (int) Math.sqrt(2 * target), dist = k * (k + 1) / 2;
        while (dist < target || (dist - target) % 2 == 1) {
            k++;
            dist = k * (k + 1) / 2;
        }
        return k;
    }
}

C++ 代码:

class Solution {
public:
    int reachNumber(int target) {
        if (target < 0) target = -target;
        int k = static_cast<int>(std::sqrt(2 * target));
        int dist = k * (k + 1) / 2;
        while (dist < target || (dist - target) % 2 == 1) {
            k++;
            dist = k * (k + 1) / 2;
        }
        return k;
    }
};

Python 代码:

class Solution:
    def reachNumber(self, target: int) -> int:
        if target < 0:
            target = -target
        k = int(math.sqrt(2 * target))
        dist = k * (k + 1) / 2
        while dist < target or (dist - target) % 2 == 1:
            k += 1
            dist = k * (k + 1) / 2
        return k

TypeScript 代码:

function reachNumber(target: number): number {
    if (target < 0) target = -target
    let k = Math.floor(Math.sqrt(2 * target)), dist = k * (k + 1) / 2
    while (dist < target || (dist - target) % 2 == 1) {
        k++
        dist = k * (k + 1) / 2
    }
    return k
}
  • 时间复杂度:平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Google_41,第41张
  • 空间复杂度:平地惊雷,GPT-4o 凌晨震撼发布,平地惊雷,GPT-4o 凌晨震撼发布_Google_41,第41张

最后

我是宫水三叶,每天都会分享算法知识,并和大家聊聊近期的所见所闻。

欢迎关注,明天见。


https://www.xamrdz.com/lan/57e1960762.html

相关文章: