<tr id="tp1vn"><td id="tp1vn"><dl id="tp1vn"></dl></td></tr>
  1. <p id="tp1vn"></p>
  2. <sub id="tp1vn"><p id="tp1vn"></p></sub>
    <u id="tp1vn"><rp id="tp1vn"></rp></u>
    <meter id="tp1vn"></meter>
      <wbr id="tp1vn"><sup id="tp1vn"></sup></wbr>
      日韩第一页浮力,欧美a在线,中文字幕无码乱码人妻系列蜜桃 ,国产成人精品三级麻豆,国产男女爽爽爽免费视频,中文字幕国产精品av,两个人日本www免费版,国产v精品成人免费视频71pao
      網易首頁 > 網易號 > 正文 申請入駐

      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-15 16:10:40
      馬斯克兒子同款虎頭包商家發聲:潑天流量砸來,根本無法量產

      馬斯克兒子同款虎頭包商家發聲:潑天流量砸來,根本無法量產

      童叔不飆車
      2026-05-15 19:31:46
      上海半場領先北京12分:周琦僅2分 洛夫頓12分阿隆德斯14分

      上海半場領先北京12分:周琦僅2分 洛夫頓12分阿隆德斯14分

      醉臥浮生
      2026-05-15 20:22:37
      讓學術能力很強的博士退學的后果是:學術圈的“杰青”保不住了

      讓學術能力很強的博士退學的后果是:學術圈的“杰青”保不住了

      必記本
      2026-05-15 12:08:25
      外交部宣布:尼安蒂將訪華

      外交部宣布:尼安蒂將訪華

      魯中晨報
      2026-05-15 17:06:04
      戛納紅毯第二彈!章澤天好美,袁姍姍嚇我一跳,周也沒扛住生圖

      戛納紅毯第二彈!章澤天好美,袁姍姍嚇我一跳,周也沒扛住生圖

      八卦南風
      2026-05-15 15:58:56
      1.1億美元拿下,世界杯離不開中國!央視獲得2026世界杯版權!

      1.1億美元拿下,世界杯離不開中國!央視獲得2026世界杯版權!

      海浪星體育
      2026-05-15 14:50:47
      58歲南太行資深領隊“南倉驛站龍哥”滑墜身亡,知情人:墜落處有二三層樓高,救援難度太大,搶救無效去世

      58歲南太行資深領隊“南倉驛站龍哥”滑墜身亡,知情人:墜落處有二三層樓高,救援難度太大,搶救無效去世

      極目新聞
      2026-05-15 17:09:57
      影壇大咖去世,66歲鐘楚紅淚灑靈堂,周星馳周潤發送花,眾星現身

      影壇大咖去世,66歲鐘楚紅淚灑靈堂,周星馳周潤發送花,眾星現身

      開開森森
      2026-05-15 08:51:25
      盤點十大元帥的子女,最有出息的是誰?這位老帥的子女很突出

      盤點十大元帥的子女,最有出息的是誰?這位老帥的子女很突出

      霹靂炮
      2026-05-15 13:54:39
      央視1.1億美元拿下2026世界杯?王濤爆料:砸下5億美元簽了2-3屆

      央視1.1億美元拿下2026世界杯?王濤爆料:砸下5億美元簽了2-3屆

      風過鄉
      2026-05-15 16:46:19
      王少杰辦理離職手續!

      王少杰辦理離職手續!

      體育哲人
      2026-05-15 18:14:42
      “農業學大寨”為啥搞不下去了?

      “農業學大寨”為啥搞不下去了?

      霹靂炮
      2026-05-15 14:08:15
      “蘭州瓜農刺死城管案”終審維持原判,當事人:考慮申訴

      “蘭州瓜農刺死城管案”終審維持原判,當事人:考慮申訴

      新京報
      2026-05-15 20:10:21
      已成功瘦了 30斤,我發現提高代謝關鍵吃法是:早餐吃夠蛋白質

      已成功瘦了 30斤,我發現提高代謝關鍵吃法是:早餐吃夠蛋白質

      新時代的兩性情感
      2026-05-15 10:08:20
      成交價1.1億!國際足聯低頭,央視拿下世界杯版權,卻遭全網吐槽

      成交價1.1億!國際足聯低頭,央視拿下世界杯版權,卻遭全網吐槽

      譚談社會
      2026-05-15 16:49:00
      網易號平臺每日辟謠公告(五月十五日)

      網易號平臺每日辟謠公告(五月十五日)

      網易號官方平臺
      2026-05-15 18:15:12
      原來她是X媽媽,難怪兒子如此惹人愛,孩子4個月大就與馬斯克分手

      原來她是X媽媽,難怪兒子如此惹人愛,孩子4個月大就與馬斯克分手

      一盅情懷
      2026-05-15 14:39:27
      特朗普訪華兩天A股流失3.5萬億!全場費用由股民買單!下周必回血

      特朗普訪華兩天A股流失3.5萬億!全場費用由股民買單!下周必回血

      丁丁鯉史紀
      2026-05-15 17:47:48
      曝央視與國際足聯談判成功!7.4億買下世界杯轉播權 1天內簽約

      曝央視與國際足聯談判成功!7.4億買下世界杯轉播權 1天內簽約

      念洲
      2026-05-15 07:46:29
      2026-05-15 21:36:49
      moonfdd incentive-icons
      moonfdd
      福大大架構師每日一題
      1227文章數 68關注度
      往期回顧 全部

      科技要聞

      直降千元起步!蘋果華為率先開啟618讓利

      頭條要聞

      伊朗外長警告阿聯酋 指責其直接參與對伊朗的軍事行動

      頭條要聞

      伊朗外長警告阿聯酋 指責其直接參與對伊朗的軍事行動

      體育要聞

      德約科維奇買的球隊,從第6級聯賽升入法甲

      娛樂要聞

      方媛為何要來《桃花塢6》沒苦硬吃?

      財經要聞

      騰訊掉隊,馬化騰戳破真相

      汽車要聞

      高爾夫GTI刷新紐北紀錄 ID. Polo GTI迎全球首秀

      態度原創

      藝術
      本地
      時尚
      手機
      公開課

      藝術要聞

      敦煌挖出王羲之書法!全卷2000字清晰如新!

      本地新聞

      用蘇繡的方式,打開江西婺源

      日常衣服千萬不用買太貴,準備幾件白色T恤,清爽百搭又實用

      手機要聞

      到手6999起!iPhone 17 Pro降價2000元,庫克早有暗示

      公開課

      李玫瑾:為什么性格比能力更重要?

      無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 精品国产你懂的在线观看| 乱人伦??国语| 欧美性群另类交| 亚洲欧美日韩综合俺去了| 激情亚洲内射一区二区三区 | 精品国产不卡在线电影| 久久久亚洲色| 国语字幕av| 国产在线拍揄自揄拍无码视频| 2024av天堂手机在线观看| av国产剧情md精品麻豆| 久久久亚洲欧洲日产国码aⅴ| 风流少妇又紧又爽又丰满| 尹人香蕉久久99天天拍久女久 | 九色91| 国产免费人成视频网| 亚洲日本中文字幕一区精品| 美女国产爆浆精品视频| 日本精品无码一区二区三区久久久| 日本高清无卡码一区二区久久| 国产精品一区二区国产主播| 欧洲国产在线精品三区| 久久不见久久见免费视频| 精品乱码一区二区| 醉酒后少妇被疯狂内射视频| 国产精品久久毛片高清| 久久人与动人物A级毛片| 亚洲人成线无码7777| 女主播扒开屁股给粉丝看尿口| 亚洲日本一区二区三区在线不卡| 亚洲熟女av乱码在线观看漫画| japan黑人极大黑炮| 无码人妻精品一区二区三区温州| 伊人久久大香线蕉综合观| 国产精品国产主播在线观看| 亚洲国产精品热久久| 国产成人免费爽爽爽视频| 成人午夜免费无码视频在线观看 | 性xxxx视频播放免费| 亚洲日本中文字幕天天更新| 欧美成年黄网站色视频|