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

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

2026-05-09:不同元素和至少為 K 的最短子數組長度。用go語言,給定一個整數數組 nums 和一個整數 k。你需要在數組中找一個連續的非空子

0
分享至

2026-05-09:不同元素和至少為 K 的最短子數組長度。用go語言,給定一個整數數組 nums 和一個整數 k。你需要在數組中找一個連續的非空子數組,使得這個子數組里不同元素的種類數對應的取值之和(也就是:每個數只算一次,不重復計)不小于 k。求滿足條件的最短子數組長度;如果不存在這樣的子數組,就返回 -1。

1 <= nums.length <= 100000。

1 <= nums[i] <= 100000。

1 <= k <= 1000000000。

輸入: nums = [2,2,3,1], k = 4。

輸出: 2。

解釋:

子數組 [2, 3] 具有不同的元素 {2, 3},它們的和為 2 + 3 = 5,這至少為 k = 4。因此,答案是 2。

題目來自力扣3795。

算法執行過程詳細描述 核心思路

我們使用滑動窗口(雙指針)算法:用左、右兩個指針界定一個連續的窗口,右指針不斷向右擴展窗口,把元素加入窗口;當窗口內不同元素的和 ≥ k時,嘗試收縮左指針縮小窗口,同時記錄滿足條件的最小窗口長度。整個過程只遍歷數組一次,保證高效性。

關鍵變量說明

  1. 1.cnt:哈希表,記錄窗口內每個數字出現的次數

  2. 2.sum:記錄窗口內不同元素的和(每個數字只加一次,重復出現不加)

  3. 3.left:滑動窗口的左邊界指針

  4. 4.ans:記錄滿足條件的最短子數組長度,初始為無窮大

  5. 5.i(右指針):滑動窗口的右邊界指針

逐步驟執行過程

數組:[2, 2, 3, 1],目標和 k=4
初始狀態:cnt=空sum=0left=0ans=無窮大

第一步:右指針 i=0,元素 x=2

  1. 1. 把 2 加入窗口:cnt[2] = 1

  2. 2. 因為是第一次出現 2,sum += 2→ sum=2

  3. 3. 判斷 sum(2) ≥ 4?不滿足,不收縮窗口

  4. 4. 當前窗口:[0,0],長度1,不滿足條件

第二步:右指針 i=1,元素 x=2
  1. 1. 把 2 加入窗口:cnt[2] = 2

  2. 2. 2 已經出現過,sum 不變化 → sum=2

  3. 3. 判斷 sum(2) ≥ 4?不滿足,不收縮窗口

  4. 4. 當前窗口:[0,1],長度2,不滿足條件

第三步:右指針 i=2,元素 x=3
  1. 1. 把 3 加入窗口:cnt[3] = 1

  2. 2. 第一次出現 3,sum += 3→ sum=5

  3. 3. 判斷 sum(5) ≥ 4?滿足條件,開始收縮左指針:

  • ? 更新最短長度:ans = min(無窮大, 2-0+1=3) → ans=3

  • ? 移出左邊界元素 2:cnt[2] = 1

  • ? 2 還在窗口中,sum 不變 → sum=5

  • ? 左指針右移:left=1

4. 再次判斷 sum(5) ≥ 4?仍滿足,繼續收縮:

  • ? 更新最短長度:ans = min(3, 2-1+1=2) → ans=2

  • ? 移出左邊界元素 2:cnt[2] = 0,2 徹底離開窗口

  • ? sum 減去 2 → sum=3

  • ? 左指針右移:left=2

5. 此時 sum=3 < 4,停止收縮

6. 當前窗口:[2,2],長度1,不滿足條件

第四步:右指針 i=3,元素 x=1

  1. 1. 把 1 加入窗口:cnt[1] = 1

  2. 2. 第一次出現 1,sum += 1→ sum=4

  3. 3. 判斷 sum(4) ≥ 4?滿足條件,開始收縮左指針:

  • ? 更新最短長度:ans = min(2, 3-2+1=2) → ans 保持 2

  • ? 移出左邊界元素 3:cnt[3] = 0,3 徹底離開窗口

  • ? sum 減去 3 → sum=1

  • ? 左指針右移:left=3

4. 此時 sum=1 < 4,停止收縮

5. 當前窗口:[3,3],長度1,不滿足條件

最終結果

遍歷完整個數組后,ans=2(不是無窮大),返回結果 2。

時間復雜度 & 空間復雜度 1. 時間復雜度

  • ? 右指針從頭到尾遍歷數組一次,共執行 n 次(n 為數組長度)

  • ? 左指針只會向右移動,不會回退,整個過程最多執行 n 次

  • ? 哈希表的增、刪、查操作都是O(1)常數時間

  • ? 總時間復雜度:O(n)(線性時間),能高效處理 10萬 長度的數組

2. 額外空間復雜度
  • ? 僅使用了一個哈希表cnt存儲窗口內的不同元素

  • ? 哈希表的最大存儲量 = 數組中不同元素的個數

  • ? 總額外空間復雜度:O(n)(最壞情況數組元素全不同)

總結
  1. 1. 執行過程:右指針擴展窗口累加不同元素和,滿足條件后左指針收縮窗口,同步記錄最小長度;

  2. 2. 時間復雜度:O(n),適合大數據量;

  3. 3. 額外空間復雜度:O(n),用于存儲窗口內元素計數。

Go完整代碼如下:

package main

import (
"fmt"
"math"
)

func minLength(nums []int, k int)int {
cnt := map[int]int{}
sum := 0
left := 0
ans := math.MaxInt

for i, x := range nums {
// 1. 入
cnt[x]++
if cnt[x] == 1 {
sum += x
}

for sum >= k {
// 2. 更新答案
ans = min(ans, i-left+1)

// 3. 出
out := nums[left]
cnt[out]--
if cnt[out] == 0 {
sum -= out
}
left++
}
}

if ans == math.MaxInt {
return-1
}
return ans
}

func main() {
nums := []int{2, 2, 3, 1}
k := 4
result := minLength(nums, k)
fmt.Println(result)
}

Python完整代碼如下:

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

import math

defminLength(nums, k):
cnt = {}
sum_val = 0
left = 0
ans = math.inf

for i, x inenumerate(nums):
# 1. 入
cnt[x] = cnt.get(x, 0) + 1
if cnt[x] == 1:
sum_val += x

while sum_val >= k:
# 2. 更新答案
ans = min(ans, i - left + 1)

# 3. 出
out_val = nums[left]
cnt[out_val] -= 1
if cnt[out_val] == 0:
sum_val -= out_val
left += 1

if ans == math.inf:
return -1
return ans

if __name__ == "__main__":
nums = [2, 2, 3, 1]
k = 4
result = minLength(nums, k)
print(result)

C++完整代碼如下:

#include  

#include
#include
#include
#include

usingnamespace std;

int minLength(vector& nums, int k) {
unordered_map cnt;
int sum = 0;
int left = 0;
int ans = INT_MAX;

for (int i = 0; i < nums.size(); i++) {
int x = nums[i];

// 1. 入
cnt[x]++;
if (cnt[x] == 1) {
sum += x;
}

while (sum >= k) {
// 2. 更新答案
ans = min(ans, i - left + 1);

// 3. 出
int out_val = nums[left];
cnt[out_val]--;
if (cnt[out_val] == 0) {
sum -= out_val;
}
left++;
}
}

if (ans == INT_MAX) {
return-1;
}
return ans;
}

int main() {
vector nums = {2, 2, 3, 1};
int k = 4;
int result = minLength(nums, k);
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”申報圖曝光 電動尾翼+激光雷達

態度原創

親子
數碼
教育
游戲
公開課

親子要聞

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

數碼要聞

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

教育要聞

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

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

公開課

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

無障礙瀏覽 進入關懷版