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

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

2026-04-29:二進制交換后的最大分數。用go語言,給定一個長度為 n 的整數數組 nums 和一個長度相同的二進制字符串 s。 初始得分為 0。對

0
分享至

2026-04-29:二進制交換后的最大分數。用go語言,給定一個長度為 n 的整數數組 nums 和一個長度相同的二進制字符串 s。

初始得分為 0。對于字符串中每個位置上字符為 '1' 的下標 i,分數都會加上 nums[i]。

你可以進行任意次操作,也可以一次都不做。每次操作時,可以選擇一個位置 i(0 <= i < n - 1),要求 s[i] = '0' 且 s[i + 1] = '1',然后把這兩個字符交換。

請計算并返回經過這些操作后,能夠得到的最高分數。

n == nums.length == s.length。

1 <= n <= 100000。

1 <= nums[i] <= 1000000000。

s[i] 是 '0' 或 '1'。

輸入: nums = [2,1,5,2,3], s = "01010"。

輸出: 7。

解釋:

我們可以執行以下交換操作:

在下標 i = 0 處交換:"01010" 變為 "10010"

在下標 i = 2 處交換:"10010" 變為 "10100"

下標 0 和 2 包含 '1',貢獻的分數為 nums[0] + nums[2] = 2 + 5 = 7。這是可以獲得的最大分數。

題目來自力扣3781。

解題過程詳細解析

先明確核心規則

  1. 1. 初始分數:所有s中為1的位置,直接加對應nums值;

  2. 2. 允許操作:只能交換相鄰的01(要求左邊是0、右邊是1),可以交換任意次;

  3. 3. 本質:1可以向左移動到任意0的位置(因為多次相鄰交換能讓1持續左移),我們的目標是:讓1停在數值最大的位置上,最大化總分。

輸入示例:
nums = [2, 1, 5, 2, 3]s = "0 1 0 1 0"(下標0~4)
初始s1的位置:下標1、下標3。

一、整體解題思路

我們從右向左遍歷數組(從最后一個元素往第一個元素走),配合最小堆實現最優選擇:

  1. 1. 最小堆的作用:存儲當前已選中的1對應的數值,堆頂永遠是最小的那個數;

  2. 2. 遍歷規則:

  • ? 遇到s[i]='1':必須選這個位置,數值加入總分,同時放入最小堆;

  • ? 遇到s[i]='0':這個位置可以放一個1(因為1能左移過來),如果當前位置的數值 > 堆里最小的數,就替換:用更大的數替換堆里最小的數,總分也同步更新(只加差值);

3. 最終堆里保留的就是k個最大的數(k是原字符串中1的個數),總和就是最大分數。

二、分步驟詳細過程(對應示例遍歷)

原數組:下標0(2)、下標1(1)、下標2(5)、下標3(2)、下標4(3)
原字符串:0、1、0、1、0
原1的數量:2個(最終必須選2個位置放1)
遍歷方向:從下標4 → 下標0

步驟1:遍歷下標4(數值3,s='0')

  • ? 當前堆為空,沒有可以替換的數,不做任何操作

步驟2:遍歷下標3(數值2,s='1')
  • ? 這是必須選的1,總分 +=2(當前總分=2);

  • ? 把數值2放入最小堆,堆:[2](堆頂是2)。

步驟3:遍歷下標2(數值5,s='0')
  • ? 這是0的位置,可以放1;

  • ? 比較:當前數5 > 堆頂最小值2;

  • ? 執行替換:總分 += 5-2 =3(總分=2+3=5);

  • ? 用5替換堆頂的2,堆調整為[5](堆頂是5)。

步驟4:遍歷下標1(數值1,s='1')
  • ? 這是必須選的1,總分 +=1(當前總分=5+1=6);

  • ? 把數值1放入最小堆,堆:[1,5](堆頂是最小的1)。

步驟5:遍歷下標0(數值2,s='0')
  • ? 這是0的位置,可以放1;

  • ? 比較:當前數2 > 堆頂最小值1;

  • ? 執行替換:總分 +=2-1=1(總分=6+1=7);

  • ? 用2替換堆頂的1,堆調整為[2,5](堆頂是2)。

三、最終結果

遍歷結束,總分=7,和題目示例輸出完全一致。
最終選中的兩個位置:下標0(2)、下標2(5),總和2+5=7。

四、復雜度分析 1. 時間復雜度

  • ? 遍歷數組:O(n)(n是數組長度,每個元素僅遍歷一次);

  • ? 堆操作:每個元素最多入堆、出堆、調整堆各一次,堆的大小最大為k(原1的個數),單次堆操作O(logk)

  • ? 總時間復雜度:O(n log n)(logk ≤ logn,是最優可接受復雜度)。

2. 額外空間復雜度
  • ? 僅使用了一個最小堆存儲元素,堆的最大空間為k(原1的個數);

  • ? 總額外空間復雜度:O(n)(最壞情況全是1,堆大小為n)。

總結
  1. 1. 核心邏輯:從右向左遍歷,用最小堆動態保留最大的k個數值(k=原1的數量);

  2. 2. 操作本質:利用規則讓1左移,替換掉更小的數值,實現分數最大化;

  3. 3. 復雜度:時間O(n log n),空間O(n),能高效處理n≤1e5的大數據量。

Go完整代碼如下:

package main

import (
"container/heap"
"fmt"
"sort"
)

func maximumScore(nums []int, s string) (ans int64) {
h := hp{}
// Traverse from the end to the beginning
for i := len(nums) - 1; i >= 0; i-- {
x := nums[i]
if s[i] == '1' {
ans += int64(x)
heap.Push(&h, x)
} elseif h.Len() > 0 && x > h.IntSlice[0] {
ans += int64(x - h.IntSlice[0])
h.IntSlice[0] = x
heap.Fix(&h, 0)
}
}
return
}

type hp struct{ sort.IntSlice }

func (h *hp) Push(v any) { h.IntSlice = append(h.IntSlice, v.(int)) }
func (hp) Pop() (_ any) { return }

func main() {
nums := []int{2, 1, 5, 2, 3}
s := "01010"
result := maximumScore(nums, s)
fmt.Println(result)
}

Python完整代碼如下:

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

import heapq

def maximumScore(nums, s):
ans = 0
h = [] # min heap
# Traverse from the end to the beginning
for i in range(len(nums) - 1, -1, -1):
x = nums[i]
if s[i] == '1':
ans += x
heapq.heappush(h, x)
elif h and x > h[0]:
ans += x - h[0]
heapq.heapreplace(h, x) # pop smallest and push x
return ans

def main():
nums = [2, 1, 5, 2, 3]
s = "01010"
result = maximumScore(nums, s)
print(result)

if __name__ == "__main__":
main()

C++完整代碼如下:

  





using namespace std;

long long maximumScore(vector& nums, string s) {
long long ans = 0;
// Min heap using greater
priority_queue, greater> pq;

// Traverse from the end to the beginning
for (int i = nums.size() - 1; i >= 0; i--) {
int x = nums[i];
if (s[i] == '1') {
ans += x;
pq.push(x);
} elseif (!pq.empty() && x > pq.top()) {
ans += x - pq.top();
pq.pop();
pq.push(x);
}
}
return ans;
}

int main() {
vector nums = {2, 1, 5, 2, 3};
string s = "01010";
long long result = maximumScore(nums, s);
cout << result << 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”申報圖曝光 電動尾翼+激光雷達

態度原創

游戲
旅游
教育
親子
軍事航空

LPL第二賽段:又是讓一追二,BLG三局戰勝IG

旅游要聞

湖南張家界天門山景區:5月12日起,景區山頂東線玻璃棧道停止開放

教育要聞

“5塊錢能吃啥早餐?”小學兒子索要20元早餐費,家長卻翻出煙盒

親子要聞

dhea什么時候吃最好時間?卵巢早衰做試管成功率高嗎?

軍事要聞

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

無障礙瀏覽 進入關懷版