Rank
Name
Score
Finish Time
Q1 (3)
Q2 (4)
Q3 (5)
Q4 (7)
893 / 8250
YoungForest
7
0:27:31
0:11:24
0:27:31
null
null
连续2次双周赛遭遇滑铁卢了。
第3题在赛后2分钟通过了,本来是在能力范围内的题目,但最后心太急了。本来晚上状态就不好,反而是比赛结束后,就写出来了。
1619. Mean of Array After Removing Some Elements
签到题。先排序,后求和,在求平均。
这里需要注意题目中限制了arr.size() % 20 == 0
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Solution {public : double trimMean (vector<int >& arr) { sort (arr.begin (), arr.end ()); const int n = arr.size (); const int x = n / 20 ; double s = 0.0 ; for (int i = 0 ; i < n; ++i) { if (i < x || (n - 1 - i) < x) continue ; s += arr[i]; } return s / (n - 2 * x); } };
时间复杂度: O(N log N),
空间复杂度: O(1).
1620. Coordinate With Maximum Network Quality
由于数据范围比较小,只有50,直接暴力。遍历每一个位置,遍历每个塔求它的信号。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 class Solution {public : vector<int > bestCoordinate (vector<vector<int >>& towers, int radius) { const double r = radius; int maxSignal = 0 ; int maxI = 0 ; int maxJ = 0 ; auto distance = [&](const int a1, const int b1, const int a2, const int b2) -> double { return sqrt ((a1 - a2) * (a1 - a2) + (b1 - b2) * (b1 - b2)); }; auto getSignal = [&](const int i, const int j) -> int { int ans = 0 ; for (const auto & t : towers) { double d = distance (t[0 ], t[1 ], i, j); if (d > r) continue ; ans += static_cast <int >(floor (t[2 ] / (1 + d))); } return ans; }; for (int i = 0 ; i <= 50 ; ++i) { for (int j = 0 ; j <= 50 ; ++j) { const int signal = getSignal (i, j); if (signal > maxSignal) { maxI = i; maxJ = j; maxSignal = signal; } } } return {maxI, maxJ}; } };
时间复杂度: O(rows * cols * towers),
空间复杂度: O(1).
1621. Number of Sets of K Non-Overlapping Line Segments
动态规划。虽然一下子就看出是DP了,但还是走了弯路。一开始写了O(n^2 * k)
的算法,没有充分利用子问题。
其实需要多设置一个变量表示开始是否必须是一个segment就好写了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Solution : def numberOfSets (self, m: int , kk: int ) -> int : MOD = int (10 **9 + 7 ) @lru_cache (None) def dp (n, k, first) : if n < k: return 0 if n = = k: return 1 if k == 1 : return ((n + 1 ) * n) if first: return (dp (n - 1 , k, True) + dp (n - 1 , k - 1 , False)) % MOD; else : return (dp (n - 1 , k, False) + dp (n, k, True)) % MOD return dp (m - 1 , kk, False)
时间复杂度: O(n * k),
空间复杂度: O(n * k).
1622. Fancy Sequence
本题已经超出我的能力范围了,完全没有思路。
学习了一遍评论区,大约有2中算法: