LeetCode 第 193 場周賽

2022-07-30 09:18:11 字數 4274 閱讀 6952

5436.一維陣列的動態和

給你乙個陣列nums。陣列「動態和」的計算公式為:runningsum[i] = sum(nums[0]…nums[i])

請返回nums的動態和。

示例 1:

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

**輸出:** [1,3,6,10]

**解釋:** 動態和計算過程為 [1, 1+2, 1+2+3, 1+2+3+4] 。

示例 2:

**輸入:** nums = [1,1,1,1,1]

**輸出:** [1,2,3,4,5]

**解釋:** 動態和計算過程為 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1] 。

示例 3:

**輸入:** nums = [3,1,2,10,1]

**輸出:** [3,4,6,16,17]

class solution 

};

5437.不同整數的最少數目

給你乙個整數陣列arr和乙個整數k。現需要從陣列中恰好移除k個元素,請找出移除後陣列中不同整數的最少數目。

示例 1:

**輸入:** arr = [5,5,4], k = 1

**輸出:** 1

**解釋:** 移除 1 個 4 ,陣列中只剩下 5 一種整數。

示例 2:

**輸入:** arr = [4,3,1,1,3,3,2], k = 3

**輸出:** 2

**解釋:** 先移除 4、2 ,然後再移除兩個 1 中的任意 1 個或者三個 3 中的任意 1 個,最後剩下 1 和 3 兩種整數。

class solution 

return 0;

}};

5438.製作 m 束花所需的最少天數

給你乙個整數陣列bloomday,以及兩個整數mk

現需要製作m束花。製作花束時,需要使用花園中相鄰的k朵花

花園中有n朵花,第i朵花會在bloomday[i]時盛開,恰好可以用於一束花中。

請你返回從花園中摘m束花需要等待的最少的天數。如果不能摘到m束花則返回-1

示例 1:

**輸入:** bloomday = [1,10,3,10,2], m = 3, k = 1

**輸出:** 3

**解釋:** 讓我們一起觀察這三天的花開過程,x 表示花開,而 _ 表示花還未開。

現在需要製作 3 束花,每束只需要 1 朵。

1 天後:[x, _, _, _, _] // 只能製作 1 束花

2 天後:[x, _, _, _, x] // 只能製作 2 束花

3 天後:[x, _, x, _, x] // 可以製作 3 束花,答案為 3

示例 2:

**輸入:** bloomday = [1,10,3,10,2], m = 3, k = 2

**輸出:** -1

**解釋:** 要製作 3 束花,每束需要 2 朵花,也就是一共需要 6 朵花。而花園中只有 5 朵花,無法滿足製作要求,返回 -1 。

示例 3:

**輸入:** bloomday = [7,7,7,7,12,7,7], m = 2, k = 3

**輸出:** 12

**解釋:** 要製作 2 束花,每束需要 3 朵。

花園在 7 天後和 12 天後的情況如下:

7 天後:[x, x, x, x, _, x, x]

可以用前 3 朵盛開的花製作第一束花。但不能使用後 3 朵盛開的花,因為它們不相鄰。

12 天後:[x, x, x, x, x, x, x]

顯然,我們可以用不同的方式製作兩束花。

示例 4:

**輸入:** bloomday = [1000000000,1000000000], m = 1, k = 1

**輸出:** 1000000000

**解釋:** 需要等 1000000000 天才能採到花來製作花束

示例 5:

**輸入:** bloomday = [1,10,2,9,3,8,4,7,5,6], m = 4, k = 2

**輸出:** 9

class solution 

return ans;

} int mindays(vector& bloomday, int m, int k) else

len = half;

}return a[first];

}};

5188.樹節點的第 k 個祖先

給你一棵樹,樹上有n個節點,按從0n-1編號。樹以父節點陣列的形式給出,其中parent[i]是節點i

的父節點。樹的根節點是編號為0的節點。

請你設計並實現getkthancestor``(int node, int k)函式,函式返回節點node的第k

個祖先節點。如果不存在這樣的祖先節點,返回-1

樹節點的第 _k_個祖先節點是從該節點到根節點路徑上的第k個節點。

示例:

!(

upload/uploads/2020/06/14/1528_ex1.png)

**輸入:**

["treeancestor","getkthancestor","getkthancestor","getkthancestor"]

[[7,[-1,0,0,1,1,2,2]],[3,1],[5,2],[6,3]]

**輸出:**

[null,1,0,-1]

**解釋:**

treeancestor treeancestor = new treeancestor(7, [-1, 0, 0, 1, 1, 2, 2]);

treeancestor.getkthancestor(3, 1); // 返回 1 ,它是 3 的父節點

treeancestor.getkthancestor(5, 2); // 返回 0 ,它是 5 的祖父節點

treeancestor.getkthancestor(6, 3); // 返回 -1 因為不存在滿足要求的祖先節點

class treeancestor 

dep[0] = 1;

dfs(0, -1);

} void dfs(int u, int fa)

} int getkthancestor(int x, int k)

return f[x][0];

}};/** * your treeancestor object will be instantiated and called as such:

* treeancestor* obj = new treeancestor(n, parent);

* int param_1 = obj->getkthancestor(node,k);

*/

LeetCode第193場周賽

class solution class solution return que.size 這裡yxc 寫的極好 yxc 用區間來處理 常數大部分情況下更小 class solution intmindays vector int bs,int m,int k vector int l n 2 r ...

LeetCode 第 193 場周賽(C )

給你乙個陣列nums。陣列 動態和 的計算公式為 runningsum i sum nums 0 nums i 請返回nums的動態和。示例 1 輸入 nums 1,2,3,4 輸出 1,3,6,10 解釋 動態和計算過程為 1,1 2,1 2 3,1 2 3 4 1 nums.length 100...

第193場周賽

class solution return res class solution map maps new treemap int len arr.length int max 1 for int i 0 i else int totoalnum maps.size arraylist sorted...