无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

網易首頁 > 網易號 > 正文 申請入駐

2026-04-22:探索地牢的得分。用go語言,給定一個生命值上限 hp,以及兩個長度分別為 n 的正整數數組 damage 和 requiremen...

0
分享至

2026-04-22:探索地牢的得分。用go語言,給定一個生命值上限 hp,以及兩個長度分別為 n 的正整數數組 damage 和 requirem)ent(下標從 1 到 n)。

地牢中共有 n 個陷阱房間,房間編號為 1,2,…,n。你可以從某個起點開始依次進入房間,并且不能跳過任何房間;即使進入后生命值降到 0 或更低,你仍然必須繼續往下走到末尾。

當你進入第 i 個房間時,生命值會立刻減少 damage[i]。生命值減少之后,如果你此時的剩余生命值 ≥ requirement[i],那么你在該房間獲得 1 分。

對任意起點 j,定義 score(j) 為從房間 j 開始一路進入到房間 n(按順序不跳過),你一共能拿到的分數。

要求你計算并返回:對所有起點 j=1 到 n,把 score(j) 加總后的結果,即 score(1)+score(2)+…+score(n)。

1 <= hp <= 1000000000。

1 <= n == damage.length == requirement.length <= 100000。

1 <= damage[i], requirement[i] <= 10000。

輸入: hp = 11, damage = [3,6,7], requirement = [4,2,5]。

輸出: 3。

解釋:

score(1) = 2, score(2) = 1, score(3) = 0??偡譃?2 + 1 + 0 = 3。

例如,score(1) = 2,因為從房間 1 開始可以獲得 2 分:

你從 11 點生命值開始。

進入房間 1,生命值變為 11 - 3 = 8。因為 8 >= 4,你獲得 1 分。

進入房間 2,生命值變為 8 - 6 = 2。因為 2 >= 2,你獲得 1 分。

進入房間 3,生命值變為 2 - 7 = -5。因為 -5 < 5,你沒有獲得分數。

題目來自力扣3771。

代碼執行過程 第一步:初始化基礎變量

  1. 1. 數組長度 n:damage 數組的長度,示例中 n=3

  2. 2. 答案初始值:總共有 n*(n+1)/2 個「潛在得分機會」,示例中 3*4/2=6

  • ? 含義:理論上所有房間都能得分的最大總分數

3. 前綴和數組 sum:長度為 n+1,sum[0]=0,用來存儲前i個傷害的累加值

第二步:遍歷每個房間 i(計算該房間的無效起點數)

代碼循環遍歷每一個房間 i,核心目的:找出「無法讓房間i得分的起點數量」,從總機會中減去。

前綴和計算

sum[i+1] = sum[i] + damage[i]

  • ? 代表:從第1個房間走到第i個房間,總共造成的傷害總和

計算無效起點的閾值

low = 走到i房間的總傷害 + requirement[i] - 生命值上限hp

  • ? 這個值的含義:起點j需要滿足「前j-1個房間的總傷害 ≥ low」,這個起點j就是無效的(走到i房間無法得分)

篩選無效起點數量

如果 low > 0:

  • ? 用二分查找,在已計算的前綴和中,找到第一個 ≥ low 的位置

  • ? 這個位置的數字,就是無法讓房間i得分的起點數量

  • ? 從總答案中減去這個數量

第三步:逐房間執行(以示例詳細演示)

示例數據:
hp=11,damage=[3,6,7],requirement=[4,2,5],n=3
初始答案=6,sum=[0,0,0,0]

遍歷第1個房間(i=0)

  1. 1. 計算前綴和:sum[1] = sum[0] + 3 = 3

  2. 2. 計算閾值 low = 3 + 4 - 11 = -4

  3. 3. low ≤ 0,無無效起點,答案保持 6

遍歷第2個房間(i=1)
  1. 1. 計算前綴和:sum[2] = sum[1] + 6 = 9

  2. 2. 計算閾值 low = 9 + 2 - 11 = 0

  3. 3. low ≤ 0,無無效起點,答案保持 6

遍歷第3個房間(i=2)
  1. 1. 計算前綴和:sum[3] = sum[2] + 7 = 16

  2. 2. 計算閾值 low = 16 + 5 - 11 = 10

  3. 3. low > 0,二分查找前綴和 sum[0~2] = [0,3,9] 中 ≥10 的數

  • ? 沒有找到,返回位置 3

4. 答案減去 3:6 - 3 = 3

第四步:輸出最終結果

最終答案=3,和題目示例完全一致。

核心邏輯總結(最易懂版)

  1. 1. 總共有 6 個潛在得分(3個起點,最多各得2、1、0分,理論滿分6)

  2. 2. 只有第3個房間存在3個無效起點(所有起點走到這里都無法得分)

  3. 3. 總得分 = 6 - 3 = 3

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

O(n log n)

  • ? 遍歷所有n個房間:O(n)

  • ? 每個房間執行一次二分查找:二分查找的時間是 O(log n)

  • ? 總復雜度:n 次遍歷 × 每次 log n 查找 = O(n log n)

  • ? 滿足 n≤10萬的性能要求

2. 總額外空間復雜度

O(n)

  • ? 只開辟了一個長度為 n+1 的前綴和數組 sum

  • ? 沒有使用其他動態增長的空間

  • ? 空間復雜度與輸入規模n成正比

總結
  1. 1. 算法核心:貢獻法+前綴和+二分,反向計算每個房間的有效得分起點數

  2. 2. 執行過程:初始化→遍歷計算前綴和→求無效起點→扣減得到總答案

  3. 3. 時間復雜度:O(n log n)(高效處理10萬數據)

  4. 4. 空間復雜度:O(n)(僅使用前綴和數組)

Go完整代碼如下:

package main

import (
"fmt"
"sort"
)

func totalScore(hp int, damage, requirement []int)int64 {
n := len(damage)
sum := make([]int, n+1)
ans := n * (n + 1) / 2
for i, req := range requirement {
sum[i+1] = sum[i] + damage[i]
low := sum[i+1] + req - hp
if low > 0 {
ans -= sort.SearchInts(sum[:i+1], low)
}
}
returnint64(ans)
}

func main() {
hp := 11
damage := []int{3, 6, 7}
requirement := []int{4, 2, 5}
result := totalScore(hp, damage, requirement)
fmt.Println(result)
}

Python完整代碼如下:

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

import bisect

def totalScore(hp, damage, requirement):
n = len(damage)
prefix_sum = [0] * (n + 1)
ans = n * (n + 1) // 2

for i, req in enumerate(requirement):
prefix_sum[i + 1] = prefix_sum[i] + damage[i]
low = prefix_sum[i + 1] + req - hp
if low > 0:
# 在 prefix_sum[0:i+1] 中查找第一個 >= low 的位置
pos = bisect.bisect_left(prefix_sum, low, 0, i + 1)
ans -= pos

return ans

if __name__ == "__main__":
hp = 11
damage = [3, 6, 7]
requirement = [4, 2, 5]
result = totalScore(hp, damage, requirement)
print(result)

C++完整代碼如下:

  




long long totalScore(int hp, const std::vector& damage, const std::vector& requirement) {
int n = damage.size();
std::vector sum(n + 1, 0);
long long ans = 1LL * n * (n + 1) / 2;

for (int i = 0; i < n; ++i) {
sum[i + 1] = sum[i] + damage[i];
int low = sum[i + 1] + requirement[i] - hp;
if (low > 0) {
// 在 sum[0..i] 中查找第一個 >= low 的位置
auto it = std::lower_bound(sum.begin(), sum.begin() + i + 1, low);
ans -= (it - sum.begin());
}
}
return ans;
}

int main() {
int hp = 11;
std::vector damage = {3, 6, 7};
std::vector requirement = {4, 2, 5};
long long result = totalScore(hp, damage, requirement);
std::cout << result << std::endl;
return0;
}

我們相信人工智能為普通人提供了一種“增強工具”,并致力于分享全方位的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.

相關推薦
熱點推薦
印度首富一家集體露面:太太戴1億九寶項鏈,62歲比兩個兒媳都美

印度首富一家集體露面:太太戴1億九寶項鏈,62歲比兩個兒媳都美

照見古今
2026-05-12 15:50:13
巨大遺憾!19歲新星落選巴西55人名單:11場5球 無緣世界杯

巨大遺憾!19歲新星落選巴西55人名單:11場5球 無緣世界杯

葉青足球世界
2026-05-12 07:41:17
伊朗官員:若再次遭襲,伊方或選擇將濃縮鈾豐度提升至90%

伊朗官員:若再次遭襲,伊方或選擇將濃縮鈾豐度提升至90%

界面新聞
2026-05-12 14:55:29
時隔13年回歸!曝63歲穆帥執教皇馬已達協議,下周官宣+本月亮相

時隔13年回歸!曝63歲穆帥執教皇馬已達協議,下周官宣+本月亮相

我愛英超
2026-05-12 19:25:44
曾因綜藝爆紅,廣州東山口“明星老洋房”6310萬元流拍

曾因綜藝爆紅,廣州東山口“明星老洋房”6310萬元流拍

中國房地產報官方號
2026-05-12 17:05:35
俄羅斯無人機核心負責人科扎連科被捕!曾親自向普京匯報

俄羅斯無人機核心負責人科扎連科被捕!曾親自向普京匯報

項鵬飛
2026-05-11 20:08:25
誰能晉級CBA總決賽?西熱力江看好2支球隊,無廣東和北京隊

誰能晉級CBA總決賽?西熱力江看好2支球隊,無廣東和北京隊

體育哲人
2026-05-12 18:22:37
村民被眼鏡王蛇咬傷打13支血清 專家:我國尚無專門血清,可用抗銀環蛇毒血清加抗眼鏡蛇毒血清

村民被眼鏡王蛇咬傷打13支血清 專家:我國尚無專門血清,可用抗銀環蛇毒血清加抗眼鏡蛇毒血清

封面新聞
2026-05-11 19:00:03
外交部回應普京最新涉華表態

外交部回應普京最新涉華表態

中國網
2026-05-11 16:22:47
周星馳又做短劇了!與抖音集團短劇版權中心聯手,翻拍《食神》

周星馳又做短劇了!與抖音集團短劇版權中心聯手,翻拍《食神》

新腕兒
2026-05-11 19:13:21
徐帆澄清離婚僅7個月,馮小剛近況曝光,曾與養女徐朵貼臉惹爭議

徐帆澄清離婚僅7個月,馮小剛近況曝光,曾與養女徐朵貼臉惹爭議

黎兜兜
2026-05-11 21:20:14
晚清最慘絞肉戰:七位頂級提督殞命 左宗棠為何三日不眠不食?

晚清最慘絞肉戰:七位頂級提督殞命 左宗棠為何三日不眠不食?

掠影后有感
2026-05-10 10:43:55
秦始皇子孫后代被找到,這四個姓氏都是他的后裔,有你的姓氏嗎?

秦始皇子孫后代被找到,這四個姓氏都是他的后裔,有你的姓氏嗎?

興趣知識
2026-05-11 18:04:48
日本大型電機制造企業尼得科公司被曝大規模造假

日本大型電機制造企業尼得科公司被曝大規模造假

澎湃新聞
2026-05-12 21:33:09
毛主席83歲給華國鋒的珍貴書法,練字真的有意義嗎?

毛主席83歲給華國鋒的珍貴書法,練字真的有意義嗎?

書畫相約
2026-05-11 10:09:02
蚌埠演唱會驚天騙局?成龍20 分鐘撈金離場?觀眾花千元看場笑話

蚌埠演唱會驚天騙局?成龍20 分鐘撈金離場?觀眾花千元看場笑話

做一個合格的吃瓜群眾
2026-05-12 15:10:23
美總統出訪為何連排泄物都要打包帶回?

美總統出訪為何連排泄物都要打包帶回?

觀星賞月
2026-05-12 02:38:46
劉曉彤當選!惠若琪在列,徐云麗無緣,中國排協公布完整名單

劉曉彤當選!惠若琪在列,徐云麗無緣,中國排協公布完整名單

跑者排球視角
2026-05-12 16:49:17
離婚后住浙江娘家,親媽和繼父給帶孩子,她卻在娛樂圈闖出一片天

離婚后住浙江娘家,親媽和繼父給帶孩子,她卻在娛樂圈闖出一片天

阿鳧愛吐槽
2026-05-11 22:13:02
陪玩陪睡根本不夠!認干爹、舔手指,背地里的陰暗面完全藏不住了

陪玩陪睡根本不夠!認干爹、舔手指,背地里的陰暗面完全藏不住了

杰絲聊古今
2026-05-03 13:35:27
2026-05-13 00:12:49
moonfdd incentive-icons
moonfdd
福大大架構師每日一題
1223文章數 67關注度
往期回顧 全部

科技要聞

宇樹發布載人變形機甲,定價390萬元起

頭條要聞

特朗普稱將同中方討論對臺軍售和黎智英案 外交部回應

頭條要聞

特朗普稱將同中方討論對臺軍售和黎智英案 外交部回應

體育要聞

騎士終于玩明白了?

娛樂要聞

白鹿風波升級!掉粉20萬評論區淪陷

財經要聞

利潤再腰斬 京東干外賣后就沒過過好日子

汽車要聞

吉利銀河“TT”申報圖曝光 電動尾翼+激光雷達

態度原創

藝術
家居
手機
公開課
軍事航空

藝術要聞

這位畫家的油畫美人讓人驚嘆不已!

家居要聞

極簡主義下的居住場域與空間

手機要聞

小米18工程機曝光:2nm芯、雙揚、大X軸馬達,終不用妥協了

公開課

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

軍事要聞

知情人士披露:美國或考慮恢復對伊朗軍事行動

無障礙瀏覽 進入關懷版