<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-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-14 00:06:08
      當女人有了婚外情人,多半會變成這樣,你別不信

      當女人有了婚外情人,多半會變成這樣,你別不信

      小影的娛樂
      2026-05-16 00:27:13
      日媒披露高市正籌備訪華,或主動承認錯誤求和,而且她篤定一件事

      日媒披露高市正籌備訪華,或主動承認錯誤求和,而且她篤定一件事

      南宗歷史
      2026-05-15 20:14:24
      小米新機官宣:2億像素+8000mAh,真機亮相!

      小米新機官宣:2億像素+8000mAh,真機亮相!

      T科技衍生
      2026-05-16 00:14:09
      北京輸上海不可怕,可怕的是賽后還有三個壞消息 大外援拉傷成隱患

      北京輸上海不可怕,可怕的是賽后還有三個壞消息 大外援拉傷成隱患

      畫夕
      2026-05-16 01:15:50
      酸破防了!多國上演“葡萄心理”,眼紅特朗普訪華被中國頂級禮遇

      酸破防了!多國上演“葡萄心理”,眼紅特朗普訪華被中國頂級禮遇

      李博世財經
      2026-05-14 17:06:56
      三指齊綠大跌收市,尾盤跳水殺跌,原因是什么?下周很可能這樣走

      三指齊綠大跌收市,尾盤跳水殺跌,原因是什么?下周很可能這樣走

      云鵬敘事
      2026-05-15 15:04:17
      特朗普結束訪問,在北京的這2天,才讓人覺得他是真正的美國總統

      特朗普結束訪問,在北京的這2天,才讓人覺得他是真正的美國總統

      光電科技君
      2026-05-15 17:37:20
      6戰5勝!泰國公開賽國羽戰報:石宇奇決勝局險勝,陳雨菲橫掃晉級

      6戰5勝!泰國公開賽國羽戰報:石宇奇決勝局險勝,陳雨菲橫掃晉級

      郝小小看體育
      2026-05-15 18:38:06
      方媛發回應又刪文,分房搶單間引爭議,曾稱自己十八歲就已經經濟獨立

      方媛發回應又刪文,分房搶單間引爭議,曾稱自己十八歲就已經經濟獨立

      阿廢冷眼觀察所
      2026-05-16 00:58:38
      世界正在發生一個極其惡心的變化!印度最終可能會成為地球大患

      世界正在發生一個極其惡心的變化!印度最終可能會成為地球大患

      世界圈
      2026-05-04 16:42:27
      這行現在真慘:到手工資2200,員工靠打包公司剩飯剩菜勉強糊口!

      這行現在真慘:到手工資2200,員工靠打包公司剩飯剩菜勉強糊口!

      黯泉
      2026-05-15 14:16:06
      珠海原市長何寧卡,曾執掌廣東發改委,退休數年仍難"安全著陸"

      珠海原市長何寧卡,曾執掌廣東發改委,退休數年仍難"安全著陸"

      王姐懶人家常菜
      2026-05-15 12:54:40
      第一集就全裸出鏡,女神新劇破格出演了

      第一集就全裸出鏡,女神新劇破格出演了

      來看美劇
      2026-04-27 16:21:10
      意大利都靈副市長發聲:雙向奔赴 多領域攜手成都共謀發展 ?

      意大利都靈副市長發聲:雙向奔赴 多領域攜手成都共謀發展 ?

      封面新聞
      2026-05-14 20:32:06
      拒絕被挑撥站隊!12歲小玥兒戳破與馬筱梅真實交情,成年人別加戲

      拒絕被挑撥站隊!12歲小玥兒戳破與馬筱梅真實交情,成年人別加戲

      橙星文娛
      2026-05-15 13:59:15
      酸了!日本征召23位留洋球員踢世界杯 再創紀錄 仍有17大名將落選

      酸了!日本征召23位留洋球員踢世界杯 再創紀錄 仍有17大名將落選

      我愛英超
      2026-05-15 14:11:02
      “電雞”在越秀被扣卻須遠赴從化取回?羊晚記者實地走訪

      “電雞”在越秀被扣卻須遠赴從化取回?羊晚記者實地走訪

      天氣觀察站
      2026-05-15 09:00:49
      再次對話為190元榴蓮“僅退款”千里討公道商家:收到《行政處罰決定書》,只要她敢于認錯我能選擇原諒

      再次對話為190元榴蓮“僅退款”千里討公道商家:收到《行政處罰決定書》,只要她敢于認錯我能選擇原諒

      紅星新聞
      2026-05-15 22:29:15
      王少杰正式離開廣東男籃,社媒告別惹人淚目,球迷難掩心中不舍

      王少杰正式離開廣東男籃,社媒告別惹人淚目,球迷難掩心中不舍

      阿謯體育
      2026-05-14 20:57:28
      2026-05-16 01:52:49
      moonfdd incentive-icons
      moonfdd
      福大大架構師每日一題
      1229文章數 68關注度
      往期回顧 全部

      科技要聞

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

      頭條要聞

      黃仁勛在北京喝豆汁痛苦皺眉 問“這是什么東西”

      頭條要聞

      黃仁勛在北京喝豆汁痛苦皺眉 問“這是什么東西”

      體育要聞

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

      娛樂要聞

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

      財經要聞

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

      汽車要聞

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

      態度原創

      房產
      教育
      藝術
      時尚
      軍事航空

      房產要聞

      老黃埔熱銷之下,珠江春,為何去化僅3成?

      教育要聞

      2027英國留學費用+排名+雅思要求一篇看懂

      藝術要聞

      1008米!沙特“世界第一高樓”項目,為何極有可能建成?

      頂級團隊拍出來的作品不如素人,問題出在哪兒了?

      軍事要聞

      烏克蘭首都基輔遭空襲 死亡人數增至12人

      無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 99视频这里有精品| 中文日韩在线一区二区| 久久99日韩国产精品久久99| 欧美另类人妻制服丝袜| 精品97国产免费人成视频| 日本少妇裸体做爰高潮片| 欧美激情精品久久久久久| 亚洲最大福利网站| 国内精品伊人久久久久7777| 国产对白刺激在线观看| 一区二区三区不卡在线| 色偷偷狠狠色综合网| 乱人伦精品视频在线观看| 波多野结衣乱码中文字幕| 2022亚洲男人天堂| 少妇一级无码av专区| 免费看的一级毛片| 亚洲人妻高清无码| 亚洲另类无码专区首页| 亚洲AV福利天堂在线观看| 国产3P视频| 欧美性大战久久久久XXX| 日韩3级| 亚洲人成网站18禁止大| www国产精品内射老师| 99亚洲男女激情在线观看| av亚洲日韩| 中文字幕无线码一区2020青青| ww国产内射精品后入国产| 四虎永久在线精品免费播放| 久久婷婷五月综合鬼色| 成人片99久久精品国产桃花岛| 99亚洲精品久久久99| 成人18视频免费69| 亚洲av色夜色精品一区| 国产精品99久久免费| 亚洲熟妇av一区| 男女动图视频网站在线播放| 国产成人午夜福利在线播放| 在线亚洲高清揄拍自拍一品区| 性刺激的大陆三级视频|