流水的 AI,鐵打的騰訊

騰訊

昨天騰訊公布了 2025 年第二季度的業績報告。

就還是那只鵝,就還是那個超預期。

總營收 1845 億,同比增長 15%;凈利潤 556.3 億,同比增長 17%;經營利潤 692.5 億,同比增長 18%。

這里面最炸裂的,是毛利率從去年的 53% 提升至 57%,盈利能力顯著增強。

這里面,最大的功勞,除了雷打不動的"長青游戲”戰略(新游戲《三角洲行動》表現強勁),還有的就是 AI 賦能。

騰訊將 AI 應用于廣告的創作、投放、推薦和效果分析,有效提升了廣告的點擊率、轉化率和廣告主的投入回報率。

這財報一出,可以說流水的 AI,鐵打的騰訊。

多少公司,還在卷大模型參數,卷快速迭代,這從行業發展來看,當然是對的。

但從商業角度(或者資本角度)來看,通常意味著"暫看不出來盈利點"的無底洞燒錢策略。

但騰訊這邊已經開始用 AI 落地盈利了,你永遠可以相信騰訊的"后手策略"。

還記得早期,各大公司都在堆參數搞大模型,唯獨騰訊遲遲沒有做大投入,導致一度被外界預言會在 AI 時代落后。之后 DeepSeek-R1 爆火,騰訊元寶直接通過"點外賣"(接入 DS 開源模型),就做到了全國 AI 應用頭號位置。

更加凡爾賽的是,騰訊利用 AI 賦能廣告這事兒,還是在當前騰訊短視頻廣告加載率只有 3%~6% 的情況下發生的,而行業領先水平大概是 13%~16%。

也就是騰訊目前僅用了很少一部分的變現能力 + AI,就賺到了大錢。

這才是理想中的科技公司:有極寬的護城河、具備規模化生產能力、能夠運用技術手段來提升利潤。

啥別說了,今年的校招策略,還是和去年、前年,大前年一樣,有鵝選鵝。

...

回歸主題。

來一道和「騰訊」相關的算法題。

題目描述

平臺:LeetCode

題號:940

給定一個字符串 s,計算 s 的 不同非空子序列 的個數。

因為結果可能很大,所以返回答案需要對 取余 。

字符串的子序列是經由原字符串刪除一些(也可能不刪除)字符但不改變剩余字符相對位置的一個新字符串。

例如,"ace""abcde" 的一個子序列,但 "aec" 不是。

示例 1:

輸入:s?=?"abc"

輸出:7

解釋:7?個不同的子序列分別是?"a",?"b",?"c",?"ab",?"ac",?"bc",?以及?"abc"

示例 2:

輸入:s?=?"aba"

輸出:6

解釋:6?個不同的子序列分別是?"a",?"b",?"ab",?"ba",?"aa"?以及?"aba"

示例 3:

輸入:s?=?"aaa"

輸出:3

解釋:3?個不同的子序列分別是?"a",?"aa"?以及?"aaa"

提示:

  • s 僅由小寫英文字母組成

序列 DP

為了方便,我們令 s 下標從 開始,定義 為考慮前 個字符,且結尾字符為 的不同子序列的個數,其中 的范圍為 代指小寫字符 a-z

我們有顯而易見的初始化條件 ,最終答案為

不失一般性考慮 該如何轉移,根據 是否為 進行分情況討論:

  • : 由于狀態定義限定了結尾字符必須是 ,因而 必然不會用到,此時有:
  • : 此時 可作為結尾元素,同時由于我們統計的是「不同」的子序列個數,因而「以 結尾的子序列方案數」與「以 結尾的子序列方案數」完全等價。 對于以 作為子序列結尾字符的方案數,容易想到其方案數等于「 單獨作為子序列」+「 拼接在其余子序列后面形成新子序列」,即有:

Java 代碼:

class?Solution?{
????int?MOD?=?(int)1e9+7;
????public?int?distinctSubseqII(String?s)?{
????????int?n?=?s.length(),?ans?=?0;
????????int[][]?f?=?new?int[n?+?1][26];
????????for?(int?i?=?1;?i?<=?n;?i++)?{
????????????int?c?=?s.charAt(i?-?1)?-?'a';
????????????for?(int?j?=?0;?j?<?26;?j++)?{
????????????????if?(c?!=?j)?{
????????????????????f[i][j]?=?f[i?-?1][j];
????????????????}?else?{
????????????????????int?cur?=?1;
????????????????????for?(int?k?=?0;?k?<?26;?k++)?cur?=?(cur?+?f[i?-?1][k])?%?MOD;
????????????????????f[i][j]?=?cur;
????????????????}
????????????}
????????}
????????for?(int?i?=?0;?i?<?26;?i++)?ans?=?(ans?+?f[n][i])?%?MOD;
????????return?ans;
????}
}

C++ 代碼:

class?Solution?{
public:
????int?distinctSubseqII(string?s)?{
????????int?n?=?s.length(),?MOD?=?1e9?+?7;
????????vector<vector<int>>?f(n?+?1,?vector<int>(26,?0));
????????for?(int?i?=?1;?i?<=?n;?++i)?{
????????????int?c?=?s[i?-?1]?-?'a';
????????????for?(int?j?=?0;?j?<?26;?++j)?{
????????????????if?(c?!=?j)?{
????????????????????f[i][j]?=?f[i?-?1][j];
????????????????}?else?{
????????????????????int?cur?=?1;
????????????????????for?(int?k?=?0;?k?<?26;?++k)?cur?=?(cur?+?f[i?-?1][k])?%?MOD;
????????????????????f[i][j]?=?cur;
????????????????}
????????????}
????????}
????????int?ans?=?0;
????????for?(int?i?=?0;?i?<?26;?++i)?ans?=?(ans?+?f[n][i])?%?MOD;
????????return?ans;
????}
};

Python 代碼:

class?Solution:
????def?distinctSubseqII(self,?s:?str)?->?int:
????????n,?MOD?=?len(s),?1e9+7
????????f?=?[[0]?*?26?for?_?in?range(n?+?1)]
????????for?i?in?range(1,?n?+?1):
????????????c?=?ord(s[i?-?1])?-?ord('a')
????????????for?j?in?range(26):
????????????????f[i][j]?=?f[i?-?1][j]?if?c?!=?j?else?(1?+?sum(f[i?-?1]))?%?MOD
????????return?int(sum(f[n])?%?MOD)

TypeScript 代碼:

function?distinctSubseqII(s:?string):?number?{
????const?MOD?=?1e9+7
????let?n?=?s.length,?ans?=?0
????const?f?=?new?Array<Array<number>>(n?+?1)
????for?(let?i?=?0;?i?<=?n;?i++)?f[i]?=?new?Array<number>(26).fill(0)
????for?(let?i?=?1;?i?<=?n;?i++)?{
????????const?c?=?s.charCodeAt(i?-?1)?-?'a'.charCodeAt(0)
????????for?(let?j?=?0;?j?<?26;?j++)?{
????????????if?(c?!=?j)?{
????????????????f[i][j]?=?f[i?-?1][j]
????????????}?else?{
????????????????let?cur?=?1
????????????????for?(let?k?=?0;?k?<?26;?k++)?cur?=?(cur?+?f[i?-?1][k])?%?MOD
????????????????f[i][j]?=?cur
????????????}
????????}
????}
????for?(let?i?=?0;?i?<?26;?i++)?ans?=?(ans?+?f[n][i])?%?MOD
????return?ans
}
  • 時間復雜度:,其中 為字符集大小
  • 空間復雜度:

轉移優化

根據轉移的依賴關系,實現上,我們并不需要真正記錄每一個 ,而可以直接記錄一個總的不同子序列方案數 ans

這可以避免每次計算新狀態時,都累加前一個 的值,有效減低時空復雜度。

Java 代碼:

class?Solution?{
????int?MOD?=?(int)1e9+7;
????public?int?distinctSubseqII(String?s)?{
????????int?n?=?s.length(),?ans?=?0;
????????int[]?f?=?new?int[26];
????????for?(int?i?=?0;?i?<?n;?i++)?{
????????????int?c?=?s.charAt(i)?-?'a',?prev?=?f[c];
????????????f[c]?=?(ans?+?1)?%?MOD;
????????????ans?=?(ans?+?f[c])?%?MOD;
????????????ans?=?(ans?-?prev?+?MOD)?%?MOD;
????????}
????????return?ans;
????}
}

C++ 代碼:

class?Solution?{
public:
????int?distinctSubseqII(string?s)?{
????????int?n?=?s.length(),?ans?=?0,?MOD?=?1e9?+?7;
????????vector<int>?f(26,?0);
????????for?(int?i?=?0;?i?<?n;?++i)?{
????????????int?c?=?s[i]?-?'a',?prev?=?f[c];
????????????f[c]?=?(ans?+?1)?%?MOD;
????????????ans?=?(ans?+?f[c])?%?MOD;
????????????ans?=?(ans?-?prev?+?MOD)?%?MOD;
????????}
????????return?ans;
????}
};

Python 代碼:

class?Solution:
????def?distinctSubseqII(self,?s:?str)?->?int:
????????n,?MOD,?ans?=?len(s),?1e9+7,?0
????????f?=?[0]?*?26
????????for?i?in?range(n):
????????????c?=?ord(s[i])?-?ord('a')
????????????prev?=?f[c]
????????????f[c]?=?(ans?+?1)?%?MOD
????????????ans?=?(ans?+?f[c]?-?prev)?%?MOD????????????
????????return?int(ans)

TypeScript 代碼:

function?distinctSubseqII(s:?string):?number?{
????const?MOD?=?1e9+7
????let?n?=?s.length,?ans?=?0
????const?f?=?new?Array<number>(26).fill(0)
????for?(let?i?=?0;?i?<?n;?i++)?{
????????const?c?=?s.charCodeAt(i)?-?'a'.charCodeAt(0),?prev?=?f[c]
????????f[c]?=?(ans?+?1)?%?MOD
????????ans?=?(ans?+?f[c])?%?MOD
????????ans?=?(ans?-?prev?+?MOD)?%?MOD
????}
????return?ans
}
  • 時間復雜度:
  • 空間復雜度:

最后

巨劃算的 LeetCode 會員優惠通道目前仍可用 ~

使用福利優惠通道 leetcode.cn/premium/?promoChannel=acoier,年度會員 有效期額外增加兩個月,季度會員 有效期額外增加兩周,更有超大額專屬 🧧 和實物 🎁 福利每月發放。

我是宮水三葉,每天都會分享算法知識,并和大家聊聊近期的所見所聞

歡迎關注,明天見。

更多更全更熱門的「筆試/面試」相關資料可訪問排版精美的 合集新基地 🎉🎉

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93363.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93363.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93363.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

再回C的進制轉換--負數

概念 負數在計算機中以補碼的形式保存&#xff0c;以int類型的-15為例&#xff0c;求補碼先對-15取絕對值&#xff0c;然后對其按位取反(得到反碼)&#xff0c;然后加1&#xff0c;就可以得到其的補碼。 二進制的補碼 -15 (取絕對值)–> 15 --> (十六進制表示)0x000f (按…

項目績效域-筆記

一、項目管理績效域 1. 價值驅動的項目管理知識體系 1&#xff09;體系構成要素 核心轉變&#xff1a;從預測型生命周期&#xff08;計劃驅動&#xff09;轉向價值驅動體系&#xff0c;融合預測型和敏捷方法組成要素&#xff1a; 12個項目管理原則&#xff08;基礎&#xff09;…

怎么判斷晶振的好壞,有什么簡單的辦法

今天來聊聊晶振的好壞判斷方法&#xff0c;3個步驟輕松搞定。外觀檢查&#xff1a;先看臉&#xff0c;再看腳晶振體積雖小&#xff0c;但問題往往寫在“臉上”。第一步&#xff0c;用肉眼觀察&#xff1a;裂痕與破損&#xff1a;晶振表面如果有明顯裂紋或缺口&#xff0c;大概率…

mac下載maven并配置,以及idea配置

文章目錄下載配置settingsidea配置下載 https://maven.apache.org/download.cgi 我下的3.6.3 https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/ 配置 open ~/.zprofile添加&#xff0c;根據自己安裝路徑修改 export MAVEN_HOME/Users/xxx/tools/apache-mave…

基于機器視覺的車道線檢測與跟蹤關鍵技術研究

摘 要 隨著自動駕駛技術的迅速發展&#xff0c;車道線檢測與跟蹤技術在提高道路安全性和駕駛自動化水平方面發揮著至關重要的作用。本文針對基于機器視覺的車道線檢測與跟蹤關鍵技術進行了深入研究&#xff0c;旨在提升車道線檢測的準確性與系統的實時響應能力。通過采用先進的…

flutter 跨平臺編碼庫 protobuf 工具使用

1 安裝依賴 dependencies:protobuf: ^3.1.0 # 或最新版本flutter pub get安裝成功之后 1 lib 下創建文件夾 testProto 2 創建文件Student.proto 文件Student.proto 文件內容 syntax "proto3"; package example2;//導入其它proto文件 import "testProto/user.…

【網絡】網絡模型總結復盤

1.OSI七層模型是什么&#xff1f;答&#xff1a;是網絡通信分層模型&#xff0c;規范不同設備的通信流程應用層 如HTTP FTP文件傳輸 DNS域名解析 SSH遠程登錄 為用戶提高服務表示層 對數據進行格式轉換加密 如TLS/SSL會話層 負責建立會話 管理和終止會話傳輸層 提高數據的安全問…

vscode的ws環境,esp32s3連接wifi

注意大小寫&#xff0c;wsl&#xff08;也就是linux環境&#xff09;嚴格區分大小寫。有幫助記得訂閱專欄點贊&#xff0c;當前不定期持續更新。 一、文件夾格式 oled1/ # 項目根目錄 ├─ main/ # 主程序文件夾 │ ├─ main.c …

面試題:如何用Flink實時計算QPS

Flink 實時計算 QPS 面試題題目&#xff1a; 假設某互聯網應用日活用戶 100 萬&#xff0c;每天產生 1 億條數據&#xff08;日志/事件&#xff09;&#xff0c;要求使用 Apache Flink 實現實時計算系統的 QPS&#xff08;Queries Per Second&#xff09;&#xff0c;并考慮以下…

Pytest項目_day12(yield、fixture的優先順序)

yield yield可以用作fixture的后置操作 yield的執行位置和scope的范圍設置有關 當我們將scope設置為function時&#xff0c;yield就會在方法結束時執行yield后的代碼yield還可以返回數據&#xff0c;類似于return&#xff0c;不過yield之后的代碼會執行&#xff0c;而return不會…

面試實戰 問題三十二 Java中創建對象的幾種方式

Java中創建對象的幾種方式 在Java中&#xff0c;創建對象是面向對象編程的核心操作。對象創建不僅涉及直接實例化&#xff0c;還包括通過設計模式、反射機制等間接方式來實現。以下我將逐步解釋Java中常見的對象創建方式&#xff0c;每種方式都基于Java語言規范和相關設計原則。…

ToDesk云電腦 vs 順網云 vs 海馬云:誰才是5090顯卡云電腦的真王者?

文章目錄一、引言二、產品介紹三、硬件配置對比3.1 處理器3.2 顯卡四、云電腦性能實測對比4.1 網絡優化4.1.1 海馬云4.1.2 ToDesk云電腦4.1.3 順網云4.2 魯大師硬件測評4.3 3DMark4.4 系統穩定性測試4.4.1 海馬云4.4.2 順網云4.4.3 ToDesk云電腦4.5 為什么這么看重平臺優化&…

.NET 在鴻蒙系統(HarmonyOS Next)上的適配探索與實踐

目錄 1. 前言 2. 項目狀態 3. 運行時環境選擇 4. NativeAOT 適配原理 4.1 底層兼容性 4.2 技術實現方案 5. 已知問題及解決方案 5.1 syscall 限制&#xff08;已解決&#xff09; 5.2 mmap 申請虛擬內存過大&#xff08;已解決&#xff09; 5.3 第三方庫缺失問題&…

圖像處理--圖像模板匹配NCC算法-->Fast NCC算法的解讀

目錄 前言 一、基礎知識 二、NCC基本公式以及解決問題 1. NCC基本公式 2. 基本公式解讀 三、簡化分母 fuv 1. 要簡化的分母 2. 積分圖 3. 分母拆開化簡 四、簡化分子 1. 要簡化的分子 2. 模板函數的近似 3. 基函數簡單解釋 五、Fast NCC歸一化互相關值 1. 最終公…

短劇小程序系統開發:賦能創作者,推動短劇藝術創新發展

短劇作為一種新興的藝術形式&#xff0c;具有獨特的魅力和發展潛力。然而&#xff0c;在傳統的發展模式下&#xff0c;短劇創作者面臨著諸多限制和挑戰。短劇小程序系統的開發&#xff0c;為創作者提供了強大的賦能&#xff0c;推動了短劇藝術的創新發展。創作工具豐富&#xf…

Redis知識點+項目+面試八股

基礎篇&#xff1a;講解Redis常用數據結構實戰篇&#xff1a;黑馬點評實戰高級篇&#xff1a;Redis高級知識點原理篇&#xff1a;Redis原理面試篇&#xff1a;Redis八股??第一章&#xff1a;基礎篇??1. Redis介紹Redis是一個key-value的數據庫&#xff0c;key一般是String類…

WPS文字和Word文檔如何選擇多個不連續的行、段

要選擇Word或WPS文字中不連續的多行、多段&#xff0c;使用鼠標加鍵盤即可快速搞定。Word和WPS文字中選擇多行的操作一樣&#xff0c;選擇多段的方法略有不同。選中以后&#xff0c;可以對這些內容進行刪除、復制、剪切、查找、替換、設置格式等操作。一、在Word和WPS文字中選擇…

嵌入式C/C++面試大全

基礎語法 1.在main執?之前和之后執?的代碼可能是什么&#xff1f; main函數執?之前&#xff0c;主要就是初始化系統相關資源&#xff1a; 設置棧指針&#xff0c;其中棧存放的局部變量、函數參數、函數調用的返回地址初始化靜態 static 變量和 global 全局變量&#xff0c;即…

Java應用架構實戰指南:主流模式解析與Spring落地實踐

在Java開發的世界里,選對應用架構不是紙上談兵,而是項目成敗的關鍵。 今天,我想和大家聊聊四種主流架構模式——分層、微服務、事件驅動和六邊形架構。這些模式在實戰中各有千秋,我會結合代碼示例和架構圖,帶大家看清它們的內核。無論你是新手還是老手,這篇文章都能幫你…

重學JS-002 --- JavaScript算法與數據結構(二)JavaScript 基礎知識

文章目錄加入jsjs 的位置控制臺變量關鍵字DOMbutton注釋CSS轉義函數參數對象屬性屬性訪問數組Math加入js 首先創建一個 script 元素。 此元素用于將 JavaScript 加載到 HTML 文件中。 <script src"./script.js"></script>js 的位置 script 標簽位于 HTML…