leetcode 1975

1975: 最大方阵和

每次操作,恰好改变两个数的正负号;多次操作,恰好改变偶数个数的正负号。

分类讨论:

  • 如果 matrix 有偶数个负数,那么可以把所有数都变成非负数。
  • 如果 matrix 有奇数个负数且没有 0,那么最终必然剩下奇数个负数,剩下一个负数是最优的。贪心地,++选择 matrix 中的绝对值最小的数(最小的负数)++,给它加上负号。
  • 如果 matrix 有奇数个负数且有 0,那么可以把一个 0 和最终剩下的一个负数操作一次,从而把所有数都变成非负数。

代码实现时,无需特判是否有 0。如果有 0,则代码中的 mn=0,对 ans 无影响。

复制代码
class Solution {
public:
    long long maxMatrixSum(vector<vector<int>>& matrix) {
        long long ans=0;
        int neg_cnt=0,mn=INT_MAX;
        for(auto& row:matrix){ //一行一行看
            for(int x:row){
                if(x<0){
                    neg_cnt++;
                    x=-x; //先把负数都变成正数
                }
                mn=min(mn,x);
                ans+=x;
            }
        }
        if(neg_cnt%2==1){
            //奇数个负数,给绝对值最小的数添加负号
            ans-=mn*2;
        }

        return ans;
    }
};
相关推荐
凯瑟琳.奥古斯特21 分钟前
力扣1009补码解法C++实现
开发语言·c++·算法·leetcode·职场和发展
KaMeidebaby24 分钟前
卡梅德生物技术快报|蛋白的叠氮基修饰:实操解析:核酸模板耦合蛋白的叠氮基修饰实现靶蛋白定点共价标记
前端·人工智能·物联网·算法·百度
通信仿真爱好者2 小时前
第【60期】--大规模MIMO系统信号检测算法误码率比较 --matlab完整代码+参考文章
算法·matlab·mimo·信号检测
AI科技星2 小时前
全域谱分析:无穷维超复数信息场分形统一场论——自然、量子、金融多重分形第一性原理完整体系(中英双语终稿)
人工智能·python·算法·金融·乖乖数学·全域数学
utf8mb4安全女神2 小时前
【Redis数据库】哨兵集群/redis集群/安装配置/主从复制/数据持久化操作/数据结构/安全限制/PHP redis/
linux·服务器·数据结构·数据库·redis·缓存
先吃饱再说3 小时前
为什么堆能 O(log n) 插入?拆解完全二叉树的数组魔法
算法·排序算法
丘山望岳3 小时前
哈希——数据分类存储柜
数据结构·散列表
留白_3 小时前
【决策树】泰坦尼克号生存预测
算法·决策树·机器学习
hqzing4 小时前
鸿蒙 PC 底层开发技术详解(七):二进制自签名算法的实现
算法·华为·harmonyos
AI科技星4 小时前
超复数全域经济周期场与信息谱场——金融与密码学底层理论重构《0·1·∞三元一体全域超复数统一场论》系列全集(六一字不漏完整合订终版)
人工智能·算法·金融·密码学·拓扑学·乖乖数学·全域数学