當前位置: 妍妍網 > 碼農

小米汽車,贏了。。。

2024-03-29碼農

一張PPT就能讓各大車企紛紛降價的「雷布斯」終於在昨晚進行了小米汽車的釋出會!


整個釋出會可以說是有著空前的盛況,作為國內最會行銷的企業家,昨晚的釋出會紛紛占據了微博、知乎、抖音等各大頭條,幾乎所有直播間線上人數都是10w+,這人氣,絕對是大賣的節奏

在釋出會上雷軍細致地分析小米SU7的各項參數和配置,巧妙地設定了市場預期。

他不僅展現了小米汽車的高價效比,還強調了其在智慧駕駛技術上與競品特斯拉的對等甚至超越,從而成功吸引了大眾的關註與討論。

小米SU7舉行釋出會,標準版售價21.59萬元。

據官方訊息,小米汽車上市27分鐘大定突破50000台。

釋出會的精彩之處不止於此。

雷軍在釋出會中表達的不僅僅是小米進軍汽車行業的雄心壯誌,更是其對於「最後一次創業」的深情寄托。

他強調,小米汽車的目標是在未來10-15年內進入全球汽車制造商前五,顯示了他對於這次跨界的決心與期望。

隨著小米SU7正式加入競爭激烈的電動車市場,它不僅是小米集團向汽車行業的一次重要擴張,也標誌著傳統汽車和新能源汽車市場的一次重要轉折。

最後:一直以來新能源車的銷售紀錄由特斯拉領先,2021 年初,售價 33.99 萬起的國產 Model Y,開放預定 10 小時內收到了 10 萬張訂單。

按照小米汽車這個速度,打破特斯拉的紀錄應該不難。

D哥朋友圈不是同學都曬出了訂單截圖,你定了嗎?

下面是今日的大廠演算法題

今日演算法題,來自LeetCod e的第36題:外觀數列,下面是我的演算法思路及實作,讓我們來看看吧。


# 演算法題目


外觀數列是一個整數 序列,從數位 1 開始,序列中的每一項都是對前一項的描述。 你可以將其理解為每一項都是對上一項中數位的計數和描述。 比如,序列中第五項為 111221,這是因為第四項是 1211,由一個 1、一個 2、兩個 1 組成,因此計數描述為 "one 1, one 2, and two 1s",轉換成數位序列即為 111221。

給定一個正整數 n(1 ≤ n ≤ 30),輸出外觀數列的第 n 項。

註意:整數序列以字串形式給出,以便能夠表達任意長度的數位序列。

# 引言

外觀數列是一個經典的編程問題,通常用於練習字串操作和迴圈邏輯。解決這個問題能幫助理解和掌握字串的遍歷、統計以及構建新字串的方法。

# 演算法思路

  1. 初始化:序列的第一項是 "1"。

  2. 構建序列:對於序列的第 n 項,從 n-1 項的描述中構建。

  • 遍歷前一項:從左到右遍歷前一項的數位,統計連續相同數位的個數。

  • 描述統計:每當遇到不同的數位或到達字串末尾時,將之前的統計結果(個數和數位)添加到當前項的描述中。

  • 更新序列:重復上述過程直到構建完第 n 項。


  • # 程式碼實作

    JavaScript 實作

    function countAndSay(n) {if (n === 1) return"1";let prev = "1";for (let i = 2; i <= n; i++) {let curr = "";letcount = 1;for (let j = 1; j < prev.length; j++) {if (prev[j] === prev[j-1]) {count++; } else { curr += count.toString() + prev[j-1];count = 1; } } curr += count.toString() + prev[prev.length - 1]; prev = curr; }return prev;}

    Java 實作

    public String countAndSay(int n) {if (n == 1) return"1"; String prev = "1";for (int i = 2; i <= n; i++) { StringBuilder curr = new StringBuilder();int count = 1;for (int j = 1; j < prev.length(); j++) {if (prev.charAt(j) == prev.charAt(j-1)) { count++; } else { curr.append(count).append(prev.charAt(j-1)); count = 1; } } curr.append(count).append(prev.charAt(prev.length() - 1)); prev = curr.toString(); }return prev;}

    Go 實作

    funccountAndSay(n int)string {if n == 1 {return"1" } prev := "1"for i := 2; i <= n; i++ {var curr []byte count := 1for j := 1; j < len(prev); j++ {if prev[j] == prev[j-1] { count++ } else { curr = append(curr, byte(count+'0'), prev[j-1]) count = 1 } } curr = append(curr, byte(count+'0'), prev[len(prev)-1]) prev = string(curr) }return prev}


    # 演算法解析

    這個問題雖然看起來簡單,但它考驗了對字串的操作能力和迴圈控制邏輯。透過逐層構建外觀數列,我們可以觀察到字串的變化規律,以及如何透過前一項推匯出後一項。


    # 範例和測試

  • 輸入:n = 1

  • 輸出:"1"

  • 輸入:n = 4

  • 輸出:"1211"

  • 透過上述程式碼,我們可以計算任意 n ≤ 30 的外觀數列的第 n 項。每次函式呼叫都將返回一個描述前一項的字串。

    # 總結

    外觀數列問題展示了如何透過字串操作和簡單的邏輯來實作復雜的序列構建。掌握這種方法對於解決實際編程中的字串相關問題非常有幫助。此外,理解和實踐這類問題還可以加深對遞迴和迴圈控制結構的理解。

    熱門推薦