力扣262周赛
力扣第262场周赛吴自华题解
强者就是通过不断地高效训练训练出来的,同时充满着热爱,使自己能够坚持下去,获得属于自己的好成绩!
第二题:
我的:
class Solution {
public:
int minOperations(vector>& grid, int x) {
vector rs;
int ans=0;
for (vector>::iterator i=grid.begin();i!=grid.end();++i) for (vector::iterator j=(*i).begin();j!=(*i).end();++j) rs.push_back(*j);
sort(rs.begin(),rs.end());
int len=(int)rs.size();
int l1,l2,r1,r2;
if (len&1){
l1=r1=len/2;
l2=l1-1;r2=r1+1;
for (int i=0;i
class Solution {
public:
int minOperations(vector>& grid, int x) {
// 说实话,这个求m和n的方式我竟然没有想到,这也是对vector也理解深入了
int n = grid.size(), m = grid[0].size(), mod = grid[0][0] % x;
//直接发现了数学本质-->同余 ...而我(上面的)仅仅知识发现了是在数轴上,然后进行了判断的模拟,显得十分麻烦
vector v;
for (auto &row : grid)
for (int cell : row) {
if (cell % x != mod)
return -1;
v.emplace_back(cell / x);
}
int mid = n * m / 2;
//用nth_element可能更节省时间,只做了要做的事情(虽然的确也多做了一点)
nth_element(v.begin(), v.begin() + mid, v.end());
int ans = 0;
for (int vi : v)
ans += abs(vi - v[mid]);
return ans;
}
};
作者:吴自华
链接:https://leetcode-cn.com/circle/discuss/2ELXyY/view/DxDKIC/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
第三题作者直接使用了map和multiset两个功能性比较强,比价合适的数据结构
对于map有序性以及unordered_map 的无序性等性质,自然要理解 他们内部实现的哈希表和红黑树两个典型数据结构
而set和multiset都是用平衡二叉树实现的,但multiset允许重复元素出现
第四题待续(要先把最长树链这个东西搞掉再说):
相关