<ruby id="9ue20"></ruby>

  1. 
    

      国产午夜福利免费入口,国产日韩综合av在线,精品久久人人妻人人做精品,蜜臀av一区二区三区精品,亚洲欧美中文日韩在线v日本,人妻av中文字幕无码专区 ,亚洲精品国产av一区二区,久久精品国产清自在天天线
      網易首頁 > 網易號 > 正文 申請入駐

      2026-05-07:給定范圍內平衡整數的數目。用go語言,給定兩個整數 low 和 high,統計在閉區間 [low, high] 內滿足“平衡”條件...

      0
      分享至

      2026-05-07:給定范圍內平衡整數的數目。用go語言,給定兩個整數 low 和 high,統計在閉區間 [low, high] 內滿足“平衡”條件的整數個數。

      對某個整數,先要求它至少是兩位數。接著把它的每一位數字按位置從左到右編號,最左邊是第 1 位。將所有在奇數位上的數字相加,得到奇數位數字和;再把所有在偶數位上的數字相加,得到偶數位數字和。如果這兩個和相等,則該整數被稱為“平衡整數”。

      最終,你需要返回區間 [low, high] 中所有平衡整數的數量。

      1 <= low <= high <= 1000000000000000。

      輸入: low = 1, high = 100。

      輸出: 9。

      解釋:

      1 到 100 之間共有 9 個平衡數,分別是 11、22、33、44、55、66、77、88 和 99。

      題目來自力扣3791。

      平衡整數計數代碼執行過程分步詳解 一、代碼整體執行步驟(分階段) 階段1:基礎邊界過濾

      1. 1. 函數接收lowhigh兩個超大整數(int64類型);

      2. 2. 首先判斷:如果high < 11,直接返回0(因為最小的平衡數是11,沒有符合條件的數);

      3. 3. 把low修正為max(low, 11),排除1-10這些無效數字,縮小計算范圍。

      階段2:數字格式化與預處理
      1. 1. 將修正后的lowhigh轉換成字符串

      • ? 目的:方便逐位處理每一位數字(數位DP的核心操作);

      2. 計算high的字符串長度n(最大數字的位數):

      • ? 示例中high=100,字符串是"100",長度n=3

      3. 計算diffLHhigh的位數 -low的位數,用于后續限制低位數字的枚舉范圍;

      4.初始化記憶化數組(memo)

      • ? 二維數組:第一維是當前處理到第幾位(0~n-1),第二維是奇偶位差值的存儲位;

      • ? 作用:緩存已經計算過的狀態,避免重復遞歸,大幅提升效率。

      階段3:核心邏輯 —— 數位DFS遞歸(深度優先搜索)

      定義遞歸函數dfs,這是數位DP的核心,參數含義:

      • ?i:當前正在處理第i位數字(從0開始,對應數字的最高位);

      • ?diff奇數位和 - 偶數位和的差值(最終diff=0就是平衡數);

      • ?limitLow:布爾值,當前位是否受low的下限約束;

      • ?limitHigh:布爾值,當前位是否受high的上限約束。

      遞歸執行流程:

      子步驟1:遞歸終止條件

      i == n(所有位數處理完畢):

      • ? 判斷diff是否等于0:

        • ? 等于0 → 是平衡數,返回1(計數+1);

        • ? 不等于0 → 不是平衡數,返回0。

      子步驟2:記憶化緩存讀取

      如果當前不受low和high的數字限制(可以自由枚舉0-9):

      1. 1. 計算記憶數組的下標(將差值偏移為非負數,防止數組越界);

      2. 2. 如果該狀態已經計算過 → 直接返回緩存的結果,不重復計算;

      3. 3. 如果沒計算過 → defer延遲存儲結果,計算完成后寫入緩存。

      子步驟3:確定當前位的枚舉范圍

      根據limitLowlimitHigh,限制當前位能選的數字:

      • ? 下限lo:受約束時=low對應位的數字,不受約束時=0;

      • ? 上限hi:受約束時=high對應位的數字,不受約束時=9;

      • ? 示例:處理100的百位時,hi只能是1,不能超過high的數字。

      子步驟4:枚舉當前位的所有合法數字

      循環遍歷從lohi的每一個數字d

      1. 1.更新差值diff

      • ? 第i位是奇數位(i%2=0):diff = diff + d;

      • ? 第i位是偶數位(i%2=1):diff = diff - d;

      2.更新約束條件

      • ? 下一位的limitLow= 當前約束 且 當前選的數字=下限;

      • ? 下一位的limitHigh= 當前約束 且 當前選的數字=上限;

      3. 遞歸調用下一位,累加所有合法結果。

      子步驟5:返回累計結果

      將當前位所有枚舉情況的結果求和,返回給上一層遞歸。

      階段4:返回最終答案

      啟動遞歸dfs(0, 0, true, true)(從第0位開始,初始差值為0,同時受low和high約束),函數返回的就是[low, high]內平衡整數的總數量。

      二、針對示例輸入的執行驗證

      輸入:low=1,high=100

      1. 1. 過濾:high=100≥11,low修正為11;

      2. 2. 格式化:low="11"(2位),high="100"(3位),n=3;

      3. 3. 遞歸枚舉所有11~100的兩位數、三位數:

      • ? 兩位數(11~99):奇數位=十位,偶數位=個位,十位=個位 → 11、22…99,共9個;

      • ? 三位數(100):奇數位(百位+個位)=1+0=1,偶數位(十位)=0,1≠0 → 不合法;

      4. 最終結果=9,與題目輸出一致。

      三、時間復雜度 & 額外空間復雜度 1. 時間復雜度

      O(位數 × 最大差值 × 10)

      • ? 核心變量:

      1. 1. 數字最大位數n:101?對應15位

      2. 2. 奇偶位最大差值:每位最大9,總差值≤15×9=135;

      3. 3. 每位枚舉數字:0~9共10種選擇;

      ? 總計算量:15 × 135 × 10 =20250(常數級極小計算量);

      ? 本質:O(1) 常數時間復雜度(因為位數固定最大15,無變量級增長)。

      2. 額外空間復雜度

      O(位數 × 最大差值)

      • ? 核心占用:記憶化數組memo

      • ? 大小:15(位數) × 135(最大差值)=2025個int64元素;

      • ? 遞歸棧空間:最大深度=數字位數=15,可忽略;

      • ? 本質:O(1) 常數空間復雜度

      總結
      1. 1. 代碼核心是數位DP+記憶化遞歸,專門解決超大范圍數字的數位統計問題;

      2. 2. 執行流程:邊界過濾→數字格式化→記憶化DFS逐位枚舉→統計合法平衡數;

      3. 3. 時間復雜度:O(1)(常數級)

      4. 4. 額外空間復雜度:O(1)(常數級)

      Go完整代碼如下:

      package main

      import (
      "fmt"
      "strconv"
      )

      func countBalanced(low, high int64)int64 {
      // 最小的滿足要求的數是 11
      if high < 11 {
      return0
      }

      low = max(low, 11)
      lowS := strconv.FormatInt(low, 10)
      highS := strconv.FormatInt(high, 10)
      n := len(highS)
      diffLH := n - len(lowS)
      memo := make([][]int64, n)
      for i := range memo {
      // diff 至少 floor(n/2) * 9,至多 ceil(n/2) * 9,值域大小 n * 9
      memo[i] = make([]int64, n*9+1)
      }

      var dfs func(int, int, bool, bool)int64
      dfs = func(i, diff int, limitLow, limitHigh bool) (res int64) {
      if i == n {
      if diff != 0 { // 不合法
      return0
      }
      return1
      }
      if !limitLow && !limitHigh {
      p := &memo[i][diff+n/2*9] // 保證下標非負
      if *p > 0 {
      return *p - 1
      }
      deferfunc() { *p = res + 1 }() // 記憶化的時候加一,這樣 memo 可以初始化成 0
      }

      lo := 0
      if limitLow && i >= diffLH {
      lo = int(lowS[i-diffLH] - '0')
      }
      hi := 9
      if limitHigh {
      hi = int(highS[i] - '0')
      }

      for d := lo; d <= hi; d++ {
      // 下一個位置奇偶性翻轉
      res += dfs(i+1, diff+(1-i%2*2)*d,
      limitLow && d == lo, limitHigh && d == hi)
      }
      return
      }
      return dfs(0, 0, true, true)
      }

      func main() {
      low := int64(1)
      high := int64(100)
      result := countBalanced(low, high)
      fmt.Println(result)
      }

      Python完整代碼如下:

      # -*-coding:utf-8-*-

      def count_balanced(low: int, high: int) -> int:
      if high < 11:
      return0

      low = max(low, 11)
      low_str = str(low)
      high_str = str(high)
      n = len(high_str)
      diff_lh = n - len(low_str)

      # 記憶化數組:memo[i][diff_offset]
      # diff 的取值范圍:[-max_diff, max_diff],max_diff = (n // 2 + (n % 2)) * 9
      max_possible_diff = ((n + 1) // 2) * 9
      memo = [[-1] * (2 * max_possible_diff + 1) for _ in range(n)]

      def dfs(i: int, diff: int, limit_low: bool, limit_high: bool) -> int:
      if i == n:
      return1if diff == 0else0

      # 記憶化:只有當不受 low 和 high 限制時才能復用
      if not limit_low and not limit_high:
      idx = diff + max_possible_diff
      if memo[i][idx] != -1:
      return memo[i][idx]

      lo = 0
      if limit_low and i >= diff_lh:
      lo = int(low_str[i - diff_lh])

      hi = 9
      if limit_high:
      hi = int(high_str[i])

      total = 0
      for d in range(lo, hi + 1):
      # 根據位置 i 的奇偶性決定 diff 的增減
      # i=0 是最高位(視為偶數位,與 Go 版本一致)
      sign = 1if i % 2 == 0else-1
      total += dfs(i + 1, diff + sign * d,
      limit_low and d == lo,
      limit_high and d == hi)

      if not limit_low and not limit_high:
      memo[i][diff + max_possible_diff] = total
      return total

      return dfs(0, 0, True, True)

      if __name__ == "__main__":
      low_val = 1
      high_val = 100
      result = count_balanced(low_val, high_val)
      print(result)

      C++完整代碼如下:

        
      




      using namespace std;

      long long countBalanced(long long low, long long high) {
      // 最小的滿足要求的數是 11
      if (high < 11) {
      return0;
      }

      low = max(low, 11LL);
      string lowS = to_string(low);
      string highS = to_string(high);
      int n = highS.length();
      int diffLH = n - lowS.length();

      // 初始化記憶化數組,使用 -1 表示未計算
      vector > memo(n, vector (n * 9 + 1, -1));

      // 使用函數對象實現遞歸
      function int , int , bool , bool )> dfs = [&]( int i, int diff, bool limitLow, bool limitHigh) -> long long {
      if (i == n) {
      return diff == 0 ? 1 : 0 ;
      }

      if (!limitLow && !limitHigh) {
      int idx = diff + n / 2 * 9 ;
      if (idx >= 0 && idx < n * 9 + 1 && memo[i][idx] != -1 ) {
      return memo[i][idx];
      }
      }

      int lo = 0 ;
      if (limitLow && i >= diffLH) {
      lo = lowS[i - diffLH] - '0' ;
      }
      int hi = 9 ;
      if (limitHigh) {
      hi = highS[i] - '0' ;
      }

      long long res = 0 ;
      for ( int d = lo; d <= hi; d++) {
      // 下一個位置奇偶性翻轉
      res += dfs(i + 1 , diff + ( 1 - i % 2 * 2 ) * d,
      limitLow && d == lo, limitHigh && d == hi);
      }

      if (!limitLow && !limitHigh) {
      int idx = diff + n / 2 * 9 ;
      if (idx >= 0 && idx < n * 9 + 1 ) {
      memo[i][idx] = res;
      }
      }

      return res;
      };

      return dfs( 0 , 0 , true , true );
      }

      int main() {
      long long low = 1 ;
      long long high = 100 ;
      long long result = countBalanced(low, high);
      cout << result << endl;
      return 0 ;
      }

      我們相信人工智能為普通人提供了一種“增強工具”,并致力于分享全方位的AI知識。在這里,您可以找到最新的AI科普文章、工具評測、提升效率的秘籍以及行業洞察。 歡迎關注“福大大架構師每日一題”,發消息可獲得面試資料,讓AI助力您的未來發展。

      特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關推薦
      熱點推薦
      河南三縣(市、區)政府主要領導調整

      河南三縣(市、區)政府主要領導調整

      汲古知新
      2026-05-13 10:22:10
      壞消息!67歲生娃的田新菊病倒了,6歲小天賜踮腳給73歲媽媽喂奶

      壞消息!67歲生娃的田新菊病倒了,6歲小天賜踮腳給73歲媽媽喂奶

      未曾青梅
      2026-05-11 22:20:21
      父親病危后女子請假陪護屢遭拒,父親去世當天她因“曠工”被公司辭退,此前公司還向其發送曠工催告函;法院:公司于期限內支付70000元

      父親病危后女子請假陪護屢遭拒,父親去世當天她因“曠工”被公司辭退,此前公司還向其發送曠工催告函;法院:公司于期限內支付70000元

      極目新聞
      2026-05-13 07:57:10
      網紅水果黑幕曝光!全是添加劑泡的,很多人天天買給孩子吃

      網紅水果黑幕曝光!全是添加劑泡的,很多人天天買給孩子吃

      泠泠說史
      2026-05-12 19:57:36
      5月13日俄烏:烏克蘭正向美國傳授戰爭之道

      5月13日俄烏:烏克蘭正向美國傳授戰爭之道

      山河路口
      2026-05-13 18:51:46
      印尼媒體:一把好牌打成稀巴爛,尤利安托下課,印尼隊解散

      印尼媒體:一把好牌打成稀巴爛,尤利安托下課,印尼隊解散

      劉剮說體壇
      2026-05-13 14:12:25
      劉嘉玲曬法國度假照,依偎梁朝偉身旁,滿臉幸福藏不住

      劉嘉玲曬法國度假照,依偎梁朝偉身旁,滿臉幸福藏不住

      人間煙火記事本
      2026-05-13 08:37:19
      《主角》直到花彩香生娃,才知她為何不跟張光榮離婚,放棄胡三元

      《主角》直到花彩香生娃,才知她為何不跟張光榮離婚,放棄胡三元

      八斗小先生
      2026-05-12 11:34:38
      皇馬主席放飛自我了!弗洛倫蒂諾:讓那個女孩提問,你們其他人都太丑了

      皇馬主席放飛自我了!弗洛倫蒂諾:讓那個女孩提問,你們其他人都太丑了

      懂個球
      2026-05-13 14:17:43
      “4只皮皮蝦1035元”當事顧客稱被網暴,涉事司機已被開除

      “4只皮皮蝦1035元”當事顧客稱被網暴,涉事司機已被開除

      澎湃新聞
      2026-05-13 14:56:06
      熱巴五一裹成“養蜂人”?這波反季穿搭才是頂流的松弛感

      熱巴五一裹成“養蜂人”?這波反季穿搭才是頂流的松弛感

      影視泡泡堂
      2026-05-13 21:10:27
      水谷隼徹底揭穿張本宇一家在日本受尊重的謊言!

      水谷隼徹底揭穿張本宇一家在日本受尊重的謊言!

      生活新鮮市
      2026-05-13 02:38:57
      趙心童、艾倫入選名人堂引質疑,羅伯遜、馬叔:入選門檻太低了!

      趙心童、艾倫入選名人堂引質疑,羅伯遜、馬叔:入選門檻太低了!

      余憁搞笑段子
      2026-05-13 10:35:20
      奉勸大家:這6樣東西千萬“別用紙巾擦”,一擦就壞,很難修復

      奉勸大家:這6樣東西千萬“別用紙巾擦”,一擦就壞,很難修復

      室內設計師有料兒
      2026-05-06 12:09:03
      國乒美女錢天一:26歲退役,不選編制選安置費,嫁世界冠軍很幸福

      國乒美女錢天一:26歲退役,不選編制選安置費,嫁世界冠軍很幸福

      以茶帶書
      2026-05-08 15:40:11
      俄專機提前12小時降落北京:在“空軍一號”抵達前,普京要完成戰略卡位

      俄專機提前12小時降落北京:在“空軍一號”抵達前,普京要完成戰略卡位

      荷蘭豆愛健康
      2026-05-13 18:43:30
      高考落幕少女誕下女嬰,父母追問生父身份后,竟對親生女兒下毒手

      高考落幕少女誕下女嬰,父母追問生父身份后,竟對親生女兒下毒手

      罪案洞察者
      2025-08-14 15:00:53
      特朗普訪華名單上的黑石帝王施瓦茨曼:他用李世民給自己命名

      特朗普訪華名單上的黑石帝王施瓦茨曼:他用李世民給自己命名

      人間像素
      2026-05-13 13:17:48
      1500萬潮汕人移民東南亞,當年究竟有多慘烈?| 地球知識局

      1500萬潮汕人移民東南亞,當年究竟有多慘烈?| 地球知識局

      地球知識局
      2026-05-13 07:30:17
      “老鳳詳”所售足金戒指被指“金包銀”拒三倍賠償,店鋪已被淘寶關閉

      “老鳳詳”所售足金戒指被指“金包銀”拒三倍賠償,店鋪已被淘寶關閉

      澎湃新聞
      2026-05-13 08:18:27
      2026-05-13 21:47:00
      moonfdd incentive-icons
      moonfdd
      福大大架構師每日一題
      1223文章數 68關注度
      往期回顧 全部

      科技要聞

      騰訊一季度營收1964.6億元 同比增9%

      頭條要聞

      媒體:黃仁勛絕非"順路同行" 而是美方刻意納入的籌碼

      頭條要聞

      媒體:黃仁勛絕非"順路同行" 而是美方刻意納入的籌碼

      體育要聞

      14年半,74萬,何冰嬌沒選那條更安穩的路

      娛樂要聞

      白鹿掉20萬粉,網友為李晨鳴不平

      財經要聞

      美國總統特朗普抵達北京

      汽車要聞

      C級純電轎跑 吉利銀河"TT"申報圖來了

      態度原創

      健康
      房產
      手機
      藝術
      親子

      干細胞能讓人“返老還童”嗎

      房產要聞

      卷瘋了!最低殺到7字頭!手握30萬,海口樓市橫著走!

      手機要聞

      好消息:安卓17已正式發布!壞消息:留給開發者的時間不多了!

      藝術要聞

      乾隆 “翻車” 名畫刷屏!

      親子要聞

      見義勇為的小工程車

      無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 日本深夜福利在线观看| 日本深夜福利在线观看| 国产超高清麻豆精品传媒麻豆精品| 成人午夜二区| 啪啪啪网站| 国产成人午夜精品福利| 国产不卡精品视频男人的天堂| 久久97久久97精品免视看| 国产精品资源管理站在线直播| 婷婷丁香五月天综合东京热| 欧美三级不卡在线播放| 麻花传剧mv在线看免费| 超碰日韩| 亚洲 制服 丝袜 无码| 精品免费看国产一区二区| av中文一区二区三区| 国产午夜亚洲精品午夜鲁丝片| 综合偷自拍亚洲乱中文字幕| 人妻少妇| 在线观看av网站| 亚洲爆乳无码专区| 91孕妇精品一区二区三区| 国产精品www夜色视频| 亚洲va中文字幕无码久久| 中文字幕人妻熟女人妻洋洋| 国产精品区视频中文字幕| 国产乱码精品一区二三区| 国产日韩精品一区二区三区在线| 秋霞午夜无码鲁丝片午夜精品| 天堂一区人妻无码| 一区二区三区激情都市| 夜夜欢天天干| 免费黄色小视频网站| 亚洲色大成网站WWW久久九九| 久久不见久久见免费视频| 自拍视频啪| 成人色一区二区三区| 男女交性全过程无遮挡会员视频| 全国最大成人网| 亚洲精品国产字幕久久麻豆| 525f|