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

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

2026-04-26:使循環數組余額非負的最少移動次數。用go語言,給定一個環形排列的數組 balance,長度為 n,其中 balance[i] 表示...

0
分享至

2026-04-26:使循環數組余額非負的最少移動次數。用go語言,給定一個環形排列的數組 balance,長度為 n,其中 balance[i] 表示第 i 個人當前的凈余額(正數代表有剩余,負數代表欠債)。

在一次操作中,你可以選擇某個人,把恰好 1 單位余額轉給他的左鄰居或右鄰居(因為是環形,首尾相鄰)。

目標:通過若干次這樣的轉移,使得所有位置的余額都變為非負(即每個人都不再欠債)。

要求:輸出實現該目標的最小操作次數;如果從初始狀態出發無法做到,則輸出 -1。

已知條件:初始時數組中最多只有一個位置的余額為負。

1 <= n == balance.length <= 100000。

-1000000000 <= balance[i] <= 1000000000。

balance 中初始至多有一個負值。

輸入:balance = [1,2,-5,2]。

輸出:6。

解釋:

一種最優的移動序列如下:

從 i = 1 移動 1 個單位到 i = 2,結果 balance = [1, 1, -4, 2]

從 i = 1 移動 1 個單位到 i = 2,結果 balance = [1, 0, -3, 2]

從 i = 3 移動 1 個單位到 i = 2,結果 balance = [1, 0, -2, 1]

從 i = 3 移動 1 個單位到 i = 2,結果 balance = [1, 0, -1, 0]

從 i = 0 移動 1 個單位到 i = 1,結果 balance = [0, 1, -1, 0]

從 i = 1 移動 1 個單位到 i = 2,結果 balance = [0, 0, 0, 0]

因此,所需的最小移動次數是 6。

題目來自力扣3776。

代碼執行過程詳細拆解 第一步:遍歷數組,統計核心信息

  1. 1. 計算數組所有元素的總和:1+2+(-5)+2 = 0

  2. 2. 遍歷過程中記錄唯一的負數位置:只有索引2的值是-5,因此negIdx=2

  3. 3. 基礎校驗:

  • ? 總和=0 ≥ 0,滿足可以完成的條件;

  • ? 存在負數,需要計算移動次數。

第二步:確定核心需求

負數位置是索引2,余額為-5,需要補充5單位余額才能變成0(非負),記need=5(需要的總余額數)。
初始化總操作次數ans=0

第三步:按距離分層收集余額(環形就近原則,最小步數)

因為是環形數組,我們從離負數位置最近的地方開始收集余額(距離越近,移動步數越少,符合最小操作次數要求),距離從1開始依次遞增:

距離 dis=1(離索引2最近的左右鄰居)

  1. 1. 找環形數組中,距離negIdx=2為1的兩個位置:

  • ? 左鄰居:(2-1+4)%4 = 1

  • ? 右鄰居:(2+1)%4 = 3

2. 這兩個位置的余額:索引1=2,索引3=2,總和s=2+2=4

3. 計算:

  • ? 當前需要5單位,這兩個位置能提供4單位,全部用完

  • ? 操作次數 += 4 × 1(4個單位,每個移動1步)→ ans=4

  • ? 剩余需要的余額:need=5-4=1

距離 dis=2(下一層更遠的位置)
  1. 1. 找環形數組中,距離negIdx=2為2的兩個位置:

  • ? 左鄰居:(2-2+4)%4 = 0

  • ? 右鄰居:(2+2)%4 = 0(環形數組,距離2時左右是同一個位置)

2. 這個位置的余額:索引0=1,總和s=1

3. 計算:

  • ? 剩余只需要1單位,這個位置恰好能提供1單位

  • ? 操作次數 += 1 × 2(1個單位,每個移動2步)→ ans=4+2=6

  • ? need=0,需求滿足,結束計算

第四步:返回結果

總操作次數為6,與題目示例輸出一致。

時間復雜度與額外空間復雜度分析 1. 時間復雜度

  • ? 第一步遍歷數組:執行了n次操作(n是數組長度);

  • ? 第三步按距離收集余額:因為最多只有1個負數,且我們是就近收集,循環次數遠小于n,可以視為常數次;

  • ? 整體總操作次數與數組長度n成正比 →時間復雜度為 O(n)

2. 額外空間復雜度
  • ? 代碼中只定義了total、negIdx、need、ans、dis、s常數個變量

  • ? 沒有創建任何與數組長度n相關的額外數組、集合等數據結構;

  • ?額外空間復雜度為 O(1)(常數級空間)。

總結
  1. 1. 執行核心流程:統計總和→定位唯一負數→校驗合法性→就近分層收集余額→累加步數→返回結果;

  2. 2. 時間復雜度:O(n)(線性復雜度,適合題目n≤100000的大數據量);

  3. 3. 額外空間復雜度:O(1)(僅使用固定變量,無額外內存開銷)。

Go完整代碼如下:

package main

import (
"fmt"
)

func minMoves(balance []int)int64 {
total := 0
negIdx := -1
for i, x := range balance {
total += x
if x < 0 {
negIdx = i
}
}

if total < 0 { // 總和必須非負
return-1
}
if negIdx < 0 { // 沒有負數,無需操作
return0
}

n := len(balance)
need := -balance[negIdx]
ans := 0
for dis := 1; ; dis++ { // 把與 negIdx 相距 dis 的數移到 negIdx
s := balance[(negIdx-dis+n)%n] + balance[(negIdx+dis)%n]
if s >= need {
ans += need * dis // need 個 1 移動 dis 次
returnint64(ans)
}
ans += s * dis // s 個 1 移動 dis 次
need -= s
}
}

func main() {
balance := []int{1, 2, -5, 2}
result := minMoves(balance)
fmt.Println(result)
}

Python完整代碼如下:

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

from typing import List

def minMoves(balance: List[int]) -> int:
total = 0
neg_idx = -1
for i, x in enumerate(balance):
total += x
if x < 0:
neg_idx = i
if total < 0: # 總和必須非負
return-1
if neg_idx < 0: # 沒有負數,無需操作
return0
n = len(balance)
need = -balance[neg_idx]
ans = 0
dis = 1
while True: # 把與 neg_idx 相距 dis 的數移到 neg_idx
left = balance[(neg_idx - dis) % n]
right = balance[(neg_idx + dis) % n]
s = left + right
if s >= need:
ans += need * dis # need 個 1 移動 dis 次
return ans
ans += s * dis # s 個 1 移動 dis 次
need -= s
dis += 1

if __name__ == "__main__":
balance = [1, 2, -5, 2]
result = minMoves(balance)
print(result)

C++完整代碼如下:

  




using namespace std;

long long minMoves(vector& balance) {
int total = 0;
int negIdx = -1;

for (int i = 0; i < balance.size(); i++) {
total += balance[i];
if (balance[i] < 0) {
negIdx = i;
}
}

if (total < 0) { // 總和必須非負
return-1;
}
if (negIdx < 0) { // 沒有負數,無需操作
return0;
}

int n = balance.size();
int need = -balance[negIdx];
long long ans = 0;

for (int dis = 1; ; dis++) { // 把與 negIdx 相距 dis 的數移到 negIdx
int left = balance[(negIdx - dis + n) % n];
int right = balance[(negIdx + dis) % n];
int s = left + right;

if (s >= need) {
ans += static_cast (need) * dis; // need 個 1 移動 dis 次
return ans;
}
ans += static_cast (s) * dis; // s 個 1 移動 dis 次
need -= s;
}
}

int main() {
vector balance = {1, 2, -5, 2};
long long result = minMoves(balance);
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.

相關推薦
熱點推薦
張繼科看不上張本智和:他就那性格 變不了的 梁靖崑改名梁大翻吧

張繼科看不上張本智和:他就那性格 變不了的 梁靖崑改名梁大翻吧

風過鄉
2026-05-12 07:05:26
里夫斯:我虧欠詹姆斯很多,投丟絕平三分后他讓我抬起頭來

里夫斯:我虧欠詹姆斯很多,投丟絕平三分后他讓我抬起頭來

懂球帝
2026-05-12 14:27:11
71.5%!歷史性暴跌,以貸養貸的泡沫崩了

71.5%!歷史性暴跌,以貸養貸的泡沫崩了

月滿大江流
2026-04-16 13:54:38
斯內德:穆帥是管理皇馬更衣室的完美人選;姆巴佩不該去度假

斯內德:穆帥是管理皇馬更衣室的完美人選;姆巴佩不該去度假

懂球帝
2026-05-12 22:21:17
八村壘談成為自由球員:我愛湖人,但談判的事還是交給經紀人

八村壘談成為自由球員:我愛湖人,但談判的事還是交給經紀人

懂球帝
2026-05-12 18:21:06
啥?汽車要漲價?我只看到市場血流成河,9.98萬元的上汽MG 4X純電SUV也來了

啥?汽車要漲價?我只看到市場血流成河,9.98萬元的上汽MG 4X純電SUV也來了

電腦吧評測室
2026-05-11 22:06:07
手機頂部出現這4個圖標,馬上關機!你的手機可能正在被人控制

手機頂部出現這4個圖標,馬上關機!你的手機可能正在被人控制

職場資深秘書
2026-05-10 13:51:21
國家紀錄!王文杰1:01:15正式獲世界田聯認證

國家紀錄!王文杰1:01:15正式獲世界田聯認證

老王談跑步
2026-05-12 15:02:38
中方一錘定音給特朗普最高禮遇,普京通告全球:中俄關系獨一無二

中方一錘定音給特朗普最高禮遇,普京通告全球:中俄關系獨一無二

混沌錄
2026-05-12 22:16:11
憤怒!廣東“撿瓶小狗”因5年幫主人掙10萬元火了!但卻因此被毒狗團隊盯上…

憤怒!廣東“撿瓶小狗”因5年幫主人掙10萬元火了!但卻因此被毒狗團隊盯上…

廣東活動
2026-05-11 12:36:44
朱可夫晚年回憶:當年德軍能從莫斯科撤走,皆因斯大林的一道指令

朱可夫晚年回憶:當年德軍能從莫斯科撤走,皆因斯大林的一道指令

飯小妹說歷史
2026-05-11 10:25:07
不愧是四川第一美人,不僅人長得漂亮,身材比例也很好,太喜歡她

不愧是四川第一美人,不僅人長得漂亮,身材比例也很好,太喜歡她

手工制作阿殲
2026-05-12 13:17:27
為什么去過朝鮮回來就沉默的人,不是隱瞞,是真的說不出

為什么去過朝鮮回來就沉默的人,不是隱瞞,是真的說不出

老特有話說
2026-05-12 15:41:08
泡泡瑪特業績炸裂,收益最高增長80%

泡泡瑪特業績炸裂,收益最高增長80%

21世紀經濟報道
2026-05-12 18:22:06
從“跨省大交流”走上省部級崗位

從“跨省大交流”走上省部級崗位

香港經濟導報
2026-05-12 11:41:21
直到王曼昱說出莎莎救了我,才讀懂王勵勤的總結!這比奪冠更戳心

直到王曼昱說出莎莎救了我,才讀懂王勵勤的總結!這比奪冠更戳心

小彭美識
2026-05-12 23:45:21
俄羅斯無人機核心負責人科扎連科被捕!曾親自向普京匯報

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

項鵬飛
2026-05-11 20:08:25
三國志系列:41年的技術積累,在畫質上究竟有多大改變?

三國志系列:41年的技術積累,在畫質上究竟有多大改變?

單機時代
2026-05-12 11:45:19
5月9日,人社部財政部2026養老金調整通知,正式公布了嗎?

5月9日,人社部財政部2026養老金調整通知,正式公布了嗎?

余生長醉N
2026-05-11 19:10:12
起底 Token 中轉黑色產業鏈:日賺 200 萬美金!大佬扎堆入局,灰色套利套路碾壓現金貸

起底 Token 中轉黑色產業鏈:日賺 200 萬美金!大佬扎堆入局,灰色套利套路碾壓現金貸

新浪財經
2026-05-12 00:15:49
2026-05-13 01:00:49
moonfdd incentive-icons
moonfdd
福大大架構師每日一題
1223文章數 67關注度
往期回顧 全部

科技要聞

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

頭條要聞

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

頭條要聞

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

體育要聞

騎士終于玩明白了?

娛樂要聞

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

財經要聞

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

汽車要聞

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

態度原創

健康
手機
藝術
本地
數碼

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

手機要聞

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

藝術要聞

震驚!他竟用鏡頭看透了所有女人的秘密!

本地新聞

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

數碼要聞

2000W電源來了!AI工作站供電新選擇

無障礙瀏覽 進入關懷版