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

  1. 
    

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

      2026-05-10:找到帶限制序列的最大值。用go語言,給定一個整數 n、一個二維整數數組 restrictions、以及一個長度為 n-1 的數組 ...

      0
      分享至

      2026-05-10:找到帶限制序列的最大值。用go語言,給定一個整數 n、一個二維整數數組 restrictions、以及一個長度為 n-1 的數組 diff。你需要生成一個長度為 n 的非負整數序列 a[0…n-1],使得:

      • ? a[0] 固定為 0。

      • ? 對于每個 i(0 ≤ i ≤ n-2),相鄰項差的絕對值不超過給定限制:|a[i] - a[i+1]| ≤ diff[i]。

      • ? 對于 restrictions 中的每一項 [idx, maxVal],都要保證對應位置滿足:a[idx] ≤ maxVal。

      在所有滿足上述條件的序列中,你的目標是讓序列里的“最大元素值”盡可能大。最終輸出這個最大元素值的最優結果。

      2 <= n <= 100000。

      1 <= restrictions.length <= n - 1。

      restrictions[i].length == 2。

      restrictions[i] = [idx, maxVal]。

      1 <= idx < n。

      1 <= maxVal <= 1000000。

      diff.length == n - 1。

      1 <= diff[i] <= 10。

      restrictions[i][0] 的值是唯一的。

      輸入: n = 10, restrictions = [[3,1],[8,1]], diff = [2,2,3,1,4,5,1,1,2]。

      輸出: 6。

      解釋:

      序列 a = [0, 2, 4, 1, 2, 6, 2, 1, 1, 3] 滿足給定的限制條件(a[3] <= 1 且 a[8] <= 1)。

      序列中的最大值為 6。

      題目來自力扣3796。

      詳細步驟

      我會完全脫離代碼,用純文字、分步驟把整個解題過程講清楚,同時最后給出時間和空間復雜度。

      一、先明確題目核心規則

      我們要構造一個長度為n的序列a,滿足:

      1. 1. 起點固定:a[0] = 0

      2. 2. 相鄰約束:|a[i] - a[i+1]| ≤ diff[i](相鄰兩個數的差值絕對值不能超過對應diff值)

      3. 3. 點位約束:指定下標idx的值必須 ≤ 給定的maxVal

      4. 4. 目標:在所有合法序列中,讓整個序列的最大值盡可能大,求這個最大可能值

      二、整體解題思路(核心:兩次遍歷 + 約束融合)

      整個算法的核心邏輯是:
      先從左到右推導出每個位置能達到的理論最大值,再從右到左修正所有違反相鄰約束和點位約束的值,最終得到合法的最優序列,再取最大值。

      下面是分步驟詳細過程

      步驟1:初始化所有位置的「硬上限」

      1. 1. 給序列的每一個位置0~n-1都設置一個初始最大允許值,默認是無窮大(表示暫時沒有限制)。

      2. 2. 遍歷所有的restrictions點位約束:

      • ? 把對應下標的硬上限直接修改為題目給定的maxVal

      • ? 比如約束[3,1],就把位置3的硬上限設為1;[8,1]就把位置8的硬上限設為1。

      • ? 其他沒有約束的位置,上限保持無窮大。

      這一步的作用:先把所有固定的點位限制記下來,后續推導不能超過這些值

      步驟2:從左到右遍歷,計算「左向最大可能值」

      從起點a[0]=0開始,向右依次計算每個位置能達到的最大理論值

      1. 1. 起點固定:a[0] = 0

      2. 2. 對于第i+1個位置:

      • ? 它的理論最大值= 左邊位置i的值 + 相鄰允許的最大增量diff[i]

      • ? 同時不能超過該位置的硬上限(步驟1設置的值)

      • ? 最終取兩者中的較小值作為當前位置的左向最大值

      這一步的邏輯:只能向右走,每次最多加diff[i],同時不能碰點位限制
      這一步結束后,得到的序列滿足:

      • ? 從左到右的相鄰約束

      • ? 所有點位硬上限約束

      • ? 但不滿足從右到左的相鄰約束(右邊的值可能太大,導致和左邊的差值超標)

      步驟3:從右到左遍歷,修正序列為「完全合法值」

      從最后一個位置開始,向左依次修正每個位置的值,讓序列同時滿足左右雙向的相鄰約束

      1. 1. 從倒數第二個位置開始,向左遍歷到第1個位置

      2. 2. 對于當前位置i

      • ? 它的最大合法值= 右邊位置i+1的值 + 相鄰允許的最大增量diff[i]

      • ? 同時不能超過步驟2算出的左向最大值

      • ? 最終取兩者中的較小值作為當前位置的最終值

      這一步的作用:修正左到右推導時,右側值過大導致的左側不合法問題,讓整個序列同時滿足:

      • ? 起點固定

      • ? 所有相鄰雙向約束

      • ? 所有點位約束

      • ? 且序列中的每個值都是當前約束下能取到的最大值(保證整體最大值最優)

      步驟4:計算最終結果

      遍歷修正后的完整序列,找出其中的最大值,就是題目要求的答案。

      三、用題目示例驗證過程(直觀理解)

      輸入:

      • ?n=10,序列長度10

      • ? 約束:[3,1][8,1]

      • ?diff = [2,2,3,1,4,5,1,1,2]

      步驟1:設置硬上限

      位置:0 1 2 3 4 5 6 7 8 9
      上限:∞ ∞ ∞ 1 ∞ ∞ ∞ ∞ 1 ∞

      步驟2:左→右推導(取最大理論值)

      • ? a[0] = 0

      • ? a[1] = min(0+2, ∞) = 2

      • ? a[2] = min(2+2, ∞) = 4

      • ? a[3] = min(4+3, 1) = 1(受約束限制)

      • ? a[4] = min(1+1, ∞) = 2

      • ? a[5] = min(2+4, ∞) = 6

      • ? a[6] = min(6+5, ∞) = 11

      • ? a[7] = min(11+1, ∞) = 12

      • ? a[8] = min(12+1, 1) = 1(受約束限制)

      • ? a[9] = min(1+2, ∞) = 3

      左→右結果:[0,2,4,1,2,6,11,12,1,3]
      (這個序列不合法:比如12和1的差值遠超diff限制)

      步驟3:右→左修正(得到合法序列)

      從右往左依次修正,讓相鄰差值合規:
      最終得到合法最優序列:[0,2,4,1,2,6,2,1,1,3]
      (和題目解釋的序列完全一致)

      步驟4:取最大值

      序列最大值 = 6 → 就是答案。

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

      整個過程只涉及三次線性遍歷

      1. 1. 初始化上限數組:O(n)

      2. 2. 左→右遍歷:O(n)

      3. 3. 右→左遍歷:O(n)

      4. 4. 求序列最大值:O(n)

      所有操作都是和序列長度n成正比的線性操作,沒有嵌套循環。
      ?總時間復雜度:O(n)

      2. 總額外空間復雜度

      我們額外開辟了兩個數組:

      1. 1. 存儲每個位置硬上限的數組:長度n

      2. 2. 存儲最終序列的數組:長度n

      其他變量都是常數級空間,不隨n變化。
      ?總額外空間復雜度:O(n)

      總結

      1. 1. 解題分四步:初始化點位上限 → 左向右推最大理論值 → 右向左修正合規值 → 取序列最大值

      2. 2. 核心是通過兩次遍歷同時滿足所有約束,并讓序列最大值最優;

      3. 3. 時間復雜度:O(n)(線性效率,適合n≤10萬的大數據量);

      4. 4. 額外空間復雜度:O(n)(用兩個長度為n的輔助數組完成計算)。

      Go完整代碼如下:

      package main

      import (
      "fmt"
      "math"
      "slices"
      )

      func findMaxVal(n int, restrictions [][]int, diff []int)int {
      maxVal := make([]int, n)
      for i := range maxVal {
      maxVal[i] = math.MaxInt
      }
      for _, r := range restrictions {
      maxVal[r[0]] = r[1]
      }

      a := make([]int, n)
      for i, d := range diff {
      a[i+1] = min(a[i]+d, maxVal[i+1])
      }
      for i := n - 2; i > 0; i-- {
      a[i] = min(a[i], a[i+1]+diff[i])
      }
      return slices.Max(a)
      }

      func main() {
      n := 10
      restrictions := [][]int{{3, 1}, {8, 1}}
      diff := []int{2, 2, 3, 1, 4, 5, 1, 1, 2}
      result := findMaxVal(n, restrictions, diff)
      fmt.Println(result)
      }

      Python完整代碼如下:

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

      import math

      def find_max_val(n, restrictions, diff):
      max_val = [math.inf] * n
      for r in restrictions:
      max_val[r[0]] = r[1]

      a = [0] * n
      for i, d in enumerate(diff):
      a[i + 1] = min(a[i] + d, max_val[i + 1])
      for i in range(n - 2, 0, -1):
      a[i] = min(a[i], a[i + 1] + diff[i])
      return max(a)

      if __name__ == "__main__":
      n = 10
      restrictions = [[3, 1], [8, 1]]
      diff = [2, 2, 3, 1, 4, 5, 1, 1, 2]
      result = find_max_val(n, restrictions, diff)
      print(result)

      C++完整代碼如下:

        
      



      using namespace std;

      int findMaxVal(int n, vector int >>& restrictions, vector< int >& diff) {
      vector< int > maxVal(n, INT_MAX);
      for (auto& r : restrictions) {
      maxVal[r[ 0 ]] = r[ 1 ];
      }

      vector< int > a(n, 0 );
      for ( int i = 0 ; i < diff.size(); i++) {
      a[i + 1 ] = min(a[i] + diff[i], maxVal[i + 1 ]);
      }

      for ( int i = n - 2 ; i > 0 ; i--) {
      a[i] = min(a[i], a[i + 1 ] + diff[i]);
      }

      return *max_element(a.begin(), a.end());
      }

      int main() {
      int n = 10 ;
      vector int >> restrictions = {{ 3 , 1 }, { 8 , 1 }};
      vector< int > diff = { 2 , 2 , 3 , 1 , 4 , 5 , 1 , 1 , 2 };
      int result = findMaxVal(n, restrictions, diff);
      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 17:35:03
      突傳噩耗!香港知名商人在家中燒炭身亡,公司面臨巨大財政壓力

      突傳噩耗!香港知名商人在家中燒炭身亡,公司面臨巨大財政壓力

      情感大頭說說
      2026-05-13 17:16:43
      4只皮皮蝦事件后續:出租車司機被開除,顧客堅持認為司機收了錢

      4只皮皮蝦事件后續:出租車司機被開除,顧客堅持認為司機收了錢

      映射生活的身影
      2026-05-13 16:55:14
      劉雨鑫打卡潮汕天價海鮮!同款瀨尿蝦對標三亞,價格真相大白

      劉雨鑫打卡潮汕天價海鮮!同款瀨尿蝦對標三亞,價格真相大白

      行者聊官
      2026-05-11 12:23:14
      研究表明:性生活次數不達標,不管男女容易早衰且癌癥風險增高!

      研究表明:性生活次數不達標,不管男女容易早衰且癌癥風險增高!

      黯泉
      2026-05-03 20:25:37
      武漢大學“分裂”奇觀:東武大與西武大,善良與邪惡對抗

      武漢大學“分裂”奇觀:東武大與西武大,善良與邪惡對抗

      紅色少女主播
      2026-05-13 16:15:27
      小米增程SUV諜照曝光:車頭掛小米Logo,非獨立子品牌

      小米增程SUV諜照曝光:車頭掛小米Logo,非獨立子品牌

      三言科技
      2026-05-13 19:32:06
      男子連續2晚嫖娼同一個女孩,鄰居撞破并舉報他倆,女孩承認收錢

      男子連續2晚嫖娼同一個女孩,鄰居撞破并舉報他倆,女孩承認收錢

      漢史趣聞
      2026-05-12 14:52:03
      你見過多少賭博做局內幕?網友:全是精心套路,根本贏不了

      你見過多少賭博做局內幕?網友:全是精心套路,根本贏不了

      另子維愛讀史
      2026-05-13 07:43:50
      這就尷尬了,三星用EUV造的4nm芯片,與中國的7nm差不多

      這就尷尬了,三星用EUV造的4nm芯片,與中國的7nm差不多

      互聯網.亂侃秀
      2026-05-13 10:48:55
      一聲嘆息!場均1.2分,姚明最后一個NBA隊友,今夏可能也要退役了

      一聲嘆息!場均1.2分,姚明最后一個NBA隊友,今夏可能也要退役了

      球毛鬼胎
      2026-05-13 17:41:37
      火箭中鋒申京和女友社媒相互取關,疑似分手

      火箭中鋒申京和女友社媒相互取關,疑似分手

      懂球帝
      2026-05-13 10:45:10
      落后5分!凌晨3點 曼城追分之戰:哈蘭德沖擊5連斬+金靴

      落后5分!凌晨3點 曼城追分之戰:哈蘭德沖擊5連斬+金靴

      葉青足球世界
      2026-05-13 19:54:51
      A股:今天突破4240點,做好準備了,明天周四大概率這樣走!

      A股:今天突破4240點,做好準備了,明天周四大概率這樣走!

      明心
      2026-05-13 15:01:22
      多爾袞定律該擴大了!網傳山東聊城繼父與繼女的養老對話,引爭議

      多爾袞定律該擴大了!網傳山東聊城繼父與繼女的養老對話,引爭議

      火山詩話
      2026-05-12 10:47:02
      廣廈G3半場碾壓山西!三外齊爆,孫銘徽效果拉滿,山西攻守拉胯!

      廣廈G3半場碾壓山西!三外齊爆,孫銘徽效果拉滿,山西攻守拉胯!

      籃球資訊達人
      2026-05-13 20:33:30
      合肥市廬陽區委常委、政法委書記周茂斌接受紀律審查和監察調查

      合肥市廬陽區委常委、政法委書記周茂斌接受紀律審查和監察調查

      環球網資訊
      2026-05-13 18:19:06
      世界杯歷史進球差了快80個 阿根廷為什么永遠追不上巴西和德國?

      世界杯歷史進球差了快80個 阿根廷為什么永遠追不上巴西和德國?

      體壇八點半的那些事兒
      2026-05-13 18:23:15
      太平軍攻南京有多慘烈?將軍祥厚及五千旗兵全部被殺,滿人被屠盡

      太平軍攻南京有多慘烈?將軍祥厚及五千旗兵全部被殺,滿人被屠盡

      老范談史
      2026-05-11 19:45:11
      12歲男孩確診癌癥晚期!研究證實:這5種添加劑正在升高癌癥風險……

      12歲男孩確診癌癥晚期!研究證實:這5種添加劑正在升高癌癥風險……

      環球網資訊
      2026-05-11 14:21:45
      2026-05-13 21:43:00
      moonfdd incentive-icons
      moonfdd
      福大大架構師每日一題
      1223文章數 68關注度
      往期回顧 全部

      科技要聞

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

      頭條要聞

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

      頭條要聞

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

      體育要聞

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

      娛樂要聞

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

      財經要聞

      美國總統特朗普抵達北京

      汽車要聞

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

      態度原創

      本地
      親子
      教育
      房產
      公開課

      本地新聞

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

      親子要聞

      見義勇為的小工程車

      教育要聞

      長檢匠心:融智聚力護成長 長沙未檢共探協同保護新路徑

      房產要聞

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

      公開課

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

      無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 国产精品h| 在线a亚洲v天堂网2018| 一本色道久久无一本色道久久无| 99热这里只有精品2| 九九成人免费视频| 蜜桃传媒av免费观看麻豆| 欧美国产日韩在线| 国产激情无码一区二区三区| 欧美日韩成人| 亚洲av熟女一区二区| 无码人妻久久一区二区三区蜜桃| 精品一区二区三区不卡| 亚洲天堂视频在线观看| 欧美黑人换爱交换乱理伦片| 国产99久久久国产精品~~牛| 精品视频一区二区福利午夜| 国产不卡在线一区二区| 69堂在线无码视频2020| 国产毛片三区二区一区| 女人喷水高潮时的视频网站| 亚洲熟妇无码一区二区三区导航| 国产精品亚洲中文字幕| 制服丝袜美腿一区二区| 免费A片国产毛无码A片| 亚洲国产人妻| 亚洲S久久久久一区二区| 日韩有码中文字幕国产| 亚洲一区中文字幕第十页| 亚洲日韩亚洲另类激情文学| 亚洲另类午夜中文字幕| 久久96| 自拍偷拍一区二区三区四| 国产一卡2卡三卡4卡免费网站| 日本在线中文字幕三区| 欧美成人午夜电影不卡97| 国产精品无码无需播放器| 乱老年女人伦免费视频| 人伦中文字幕| 亚洲精品成人片在线观看| 天天澡日日澡狠狠欧美老妇| a片地址|