LeetCode 第 29 场双周赛(890/2259,前39.4%)
文章目錄
- 1. 比賽結(jié)果
- 2. 題目
- 1. LeetCode 5432. 去掉最低工資和最高工資后的工資平均值 easy
- 2. LeetCode 5433. n 的第 k 個(gè)因子 medium
- 3. LeetCode 5434. 刪掉一個(gè)元素以后全為 1 的最長(zhǎng)子數(shù)組 medium
- 4. LeetCode 5435. 并行課程 II hard
1. 比賽結(jié)果
做出來了3道題。第三題卡了一會(huì),第四題知道拓?fù)渑判?#xff0c;后面就沒有思路了。繼續(xù)加油!
全國(guó)排名:890 / 2259,39.4%;全球排名: 3407 / 7933,42.9%
2. 題目
1. LeetCode 5432. 去掉最低工資和最高工資后的工資平均值 easy
題目鏈接
給你一個(gè)整數(shù)數(shù)組 salary ,數(shù)組里每個(gè)數(shù)都是 唯一 的,其中 salary[i] 是第 i 個(gè)員工的工資。
請(qǐng)你返回去掉最低工資和最高工資以后,剩下員工工資的平均值。
示例 1: 輸入:salary = [4000,3000,1000,2000] 輸出:2500.00000 解釋:最低工資和最高工資分別是 1000 和 4000 。 去掉最低工資和最高工資以后的平均工資是 (2000+3000)/2= 2500示例 2: 輸入:salary = [1000,2000,3000] 輸出:2000.00000 解釋:最低工資和最高工資分別是 1000 和 3000 。 去掉最低工資和最高工資以后的平均工資是 (2000)/1= 2000示例 3: 輸入:salary = [6000,5000,4000,3000,2000,1000] 輸出:3500.00000示例 4: 輸入:salary = [8000,9000,2000,3000,6000,1000] 輸出:4750.00000提示: 3 <= salary.length <= 100 10^3 <= salary[i] <= 10^6 salary[i] 是唯一的。 與真實(shí)值誤差在 10^-5 以內(nèi)的結(jié)果都將視為正確答案。解題:
class Solution {//C++ public:double average(vector<int>& salary) {int MAX = *max_element(salary.begin(), salary.end());int MIN = *min_element(salary.begin(), salary.end());int sum = accumulate(salary.begin(), salary.end(),0);return (sum-MAX-MIN)/double(salary.size()-2);} }; class Solution:# py3def average(self, salary: List[int]) -> float:salary.sort()s = sum(salary)-salary[0]-salary[-1]return s/(len(salary)-2)2. LeetCode 5433. n 的第 k 個(gè)因子 medium
題目鏈接
給你兩個(gè)正整數(shù) n 和 k 。
如果正整數(shù) i 滿足 n % i == 0 ,那么我們就說正整數(shù) i 是整數(shù) n 的因子。
考慮整數(shù) n 的所有因子,將它們 升序排列 。
請(qǐng)你返回第 k 個(gè)因子。如果 n 的因子數(shù)少于 k ,請(qǐng)你返回 -1 。
解題:
class Solution {//C++ public:int kthFactor(int n, int k) {set<int> s;for(int i = 1; i <= n; i++) {if(n%i==0)s.insert(i);}if(s.size() < k)return -1;auto it = s.begin();while(--k && it != s.end()){it++;}return *it;} };or
- 因?yàn)槭怯行虻?#xff0c;直接遍歷到第k個(gè)返回即可
3. LeetCode 5434. 刪掉一個(gè)元素以后全為 1 的最長(zhǎng)子數(shù)組 medium
題目鏈接
給你一個(gè)二進(jìn)制數(shù)組 nums ,你需要從中刪掉一個(gè)元素。
請(qǐng)你在刪掉元素的結(jié)果數(shù)組中,返回最長(zhǎng)的且只包含 1 的非空子數(shù)組的長(zhǎng)度。
如果不存在這樣的子數(shù)組,請(qǐng)返回 0 。
示例 1: 輸入:nums = [1,1,0,1] 輸出:3 解釋:刪掉位置 2 的數(shù)后,[1,1,1] 包含 3 個(gè) 1 。示例 2: 輸入:nums = [0,1,1,1,0,1,1,0,1] 輸出:5 解釋:刪掉位置 4 的數(shù)字后, [0,1,1,1,1,1,0,1] 的最長(zhǎng)全 1 子數(shù)組為 [1,1,1,1,1] 。示例 3: 輸入:nums = [1,1,1] 輸出:2 解釋:你必須要?jiǎng)h除一個(gè)元素。示例 4: 輸入:nums = [1,1,0,0,1,1,1,0,1] 輸出:4示例 5: 輸入:nums = [0,0,0] 輸出:0提示: 1 <= nums.length <= 10^5 nums[i] 要么是 0 要么是 1 。解題:
類似題目:LeetCode 1004. 最大連續(xù)1的個(gè)數(shù) III(滑動(dòng)窗口)
- 比賽,沒想出滑動(dòng)窗口,很差的代碼如下(記錄所有的窗口,再檢查能否合并)
- 滑動(dòng)窗口,根據(jù)可以刪除的0的個(gè)數(shù)k,來收放窗口
4. LeetCode 5435. 并行課程 II hard
題目鏈接
給你一個(gè)整數(shù) n 表示某所大學(xué)里課程的數(shù)目,編號(hào)為 1 到 n ,數(shù)組 dependencies 中, dependencies[i] = [xi, yi] 表示一個(gè)先修課的關(guān)系,也就是課程 xi 必須在課程 yi 之前上。同時(shí)你還有一個(gè)整數(shù) k 。
在一個(gè)學(xué)期中,你 最多 可以同時(shí)上 k 門課,前提是這些課的先修課在之前的學(xué)期里已經(jīng)上過了。
請(qǐng)你返回上完所有課最少需要多少個(gè)學(xué)期。題目保證一定存在一種上完所有課的方式。
示例 1:
示例 2:
解題:
待補(bǔ)
總結(jié)
以上是生活随笔為你收集整理的LeetCode 第 29 场双周赛(890/2259,前39.4%)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 309. 最佳买卖股票
- 下一篇: 基于奇异值分解(SVD)的图片压缩实践