OpenAI首个AI视频模型Sora:给世界亿点点震撼。。

OpenAI - Sora

春节假期余额不足,临近复工。

要问今天最大的新闻是什么?

那必然是由 OpenAI 发布的首款视频模型 Sora。

说起 AI 视频工具,大家应该并不陌生。

像 RunwayGen2、Stable Video Diffusion 和 Pika 等 AI 视频工具早就如雷贯耳。

那为什么今天发布的 Sora 还能掀起如此巨浪?

简单来说,相比于市面上现有的 AI 视频工具,Sora 距离真正的视频生产力(成品视频 or 视频素材)往前了几十个身位。

在今天之前,在 AI 视频工具领域,热度一直居高不下的是由初创公司 Pika Labs 于 2023 年 4 月底推出的 Pika。

Pika 可以将任何创意转化为视频,用户只需要输入文字或上传图片,即可生成对应的不同风格(电影/3D 动画/动漫)的视频。

然而,Pika 的最大瓶颈在于:只能生成长度 3 秒的连贯视频

而今天 OpenAI 发布的 Sora:可以生成足足一分钟的连贯视频

一分钟的连贯视频,是什么概念?

你要知道,很多短视频可能都没有一分钟。

其他 AI 视频工具的 3 秒连贯视频可能连「视频素材」门槛都没摸到,而 Sora 都直逼「成品视频」的长度了。

距离图文工作者无缝切换为视频工作者,只写脚本生成成品视频的最终目标,又往前了一大步。

怎么样,现在感受到来自 OpenAI 的亿点点震撼了吗?🤣

现在,请想象你是模型本身。

给你如下一段文字描述(Prompt),请你在脑海中想象出对应的视频:

一位时尚女性走在充满温暖霓虹灯和动画城市标牌的东京街道上。她穿着黑色皮夹克、红色长裙和黑色靴子,拎着黑色钱包。她戴着太阳镜,涂着红色口红。她走路自信又随意。街道潮湿且反光,在彩色灯光的照射下形成镜面效果。许多行人走来走去。

而这,是 Sora 给出的答案:

是不是又一次感受到了来自 OpenAI 的亿点点震撼。

.....

回归主线。

多少还是在假期的边缘,来一道简单的算法题。

题目描述

平台:LeetCode

题号:543

给你一棵二叉树的根节点,返回该树的 直径 。

二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。

这条路径可能经过也可能不经过根节点 root

两节点之间路径的 长度 由它们之间边数表示。

示例 1:

ini 复制代码
输入:root = [1,2,3,4,5]

输出:3

解释:3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。

示例 2:

ini 复制代码
输入:root = [1,2]

输出:1

提示:

  • 树中节点数目在范围 <math xmlns="http://www.w3.org/1998/Math/MathML"> [ 1 , 1 0 4 ] [1, 10^4] </math>[1,104] 内
  • <math xmlns="http://www.w3.org/1998/Math/MathML"> − 100 < = N o d e . v a l < = 100 -100 <= Node.val <= 100 </math>−100<=Node.val<=100

DFS

定义全局变量 ans(初始化为 0),用于记录二叉树的最大直径。

设计用于遍历二叉树的 DFS 函数:函数传入当前节点 u,返回以该节点为根时,方向"往下"的最大路径节点数量(注意这里是点数,而不是题目要求的边数)。

单次执行流程中,先递归处理当前节点 u 的左右节点,得到左右子树为根时的"往下"最大路径 lr,两者中的较大值 +1 即是本次执行流程的返回值(+1 的含义是在子路径基础上增加当前节点)。

同时,l + r 则是以当前节点 u 为路径最高点时的路径长度,用此更新全局 ans 即可。

Java 代码:

Java 复制代码
class Solution {
    int ans = 0;
    public int diameterOfBinaryTree(TreeNode root) {
        dfs(root);
        return ans;
    }
    int dfs(TreeNode u) {
        if (u == null) return 0;
        int l = dfs(u.left), r = dfs(u.right);
        ans = Math.max(ans, l + r);
        return Math.max(l, r) + 1;
    }
}

C++ 代码:

C++ 复制代码
class Solution {
public:
    int ans = 0;
    int diameterOfBinaryTree(TreeNode* root) {
        dfs(root);
        return ans;
    }
    int dfs(TreeNode* u) {
        if (u == NULL) return 0;
        int l = dfs(u->left), r = dfs(u->right);
        ans = max(ans, l + r);
        return max(l, r) + 1;
    }
};

Python 代码:

Python 复制代码
class Solution:
    def diameterOfBinaryTree(self, root: TreeNode) -> int:
        ans = 0
        def dfs(u):
            nonlocal ans
            if not u: return 0
            left, right = dfs(u.left), dfs(u.right)
            ans = max(ans, left + right)
            return max(left, right) + 1 
        dfs(root)
        return ans

TypeScript 代码:

TypeScript 复制代码
function diameterOfBinaryTree(root: TreeNode | null): number {
    let ans = 0;
    const dfs = function(u: TreeNode): number {
        if (!u) return 0;
        const l = dfs(u.left), r = dfs(u.right);
        ans = Math.max(ans, l + r);
        return Math.max(l, r) + 1;
    };
    dfs(root);
    return ans;
};
  • 时间复杂度: <math xmlns="http://www.w3.org/1998/Math/MathML"> O ( n ) O(n) </math>O(n)
  • 空间复杂度: <math xmlns="http://www.w3.org/1998/Math/MathML"> O ( n ) O(n) </math>O(n)

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

欢迎关注,明天见。

相关推荐
zhougl9961 小时前
html处理Base文件流
linux·前端·html
花花鱼1 小时前
node-modules-inspector 可视化node_modules
前端·javascript·vue.js
HBR666_1 小时前
marked库(高效将 Markdown 转换为 HTML 的利器)
前端·markdown
战族狼魂2 小时前
CSGO 皮肤交易平台后端 (Spring Boot) 代码结构与示例
java·spring boot·后端
careybobo2 小时前
海康摄像头通过Web插件进行预览播放和控制
前端
杉之4 小时前
常见前端GET请求以及对应的Spring后端接收接口写法
java·前端·后端·spring·vue
喝拿铁写前端4 小时前
字段聚类,到底有什么用?——从系统混乱到结构认知的第一步
前端
再学一点就睡4 小时前
大文件上传之切片上传以及开发全流程之前端篇
前端·javascript
hycccccch4 小时前
Canal+RabbitMQ实现MySQL数据增量同步
java·数据库·后端·rabbitmq
bobz9655 小时前
k8s 怎么提供虚拟机更好
后端