当前位置: 首页 > article >正文

LeetCode 1975. Maximum Matrix Sum

🔗 https://leetcode.com/problems/maximum-matrix-sum

题目

  • 给一个二维数组,里面的元素有正有负
  • 可以对临近的两个元素乘以 -1
  • 求经过若干上述操作,二维数组元素的合的最大值

思路

  • 不能一上来就想模拟,而是要认知到临近的数乘以 -1 带来的变化
  • 对于偶数个负数,经过上述操作,可以都变成正数
  • 对于奇数个负数,经过上述操作,必然有一个数是负数
  • 既然想要二维数组之和最大,在有奇数个负数的时候,让 abs 最小的值为负数即可

踩坑

  • 注意判断位运算的结果,用括号保证优先级,以下两种不同方式,结果是不同的
    • (freq & 1) == 0
    • freq & 1 == 0

代码

class Solution {
public:
    long long maxMatrixSum(vector<vector<int>>& matrix) {
        long long sum = 0;
        int freq = 0;
        int m = abs(matrix[0][0]);
        for (int i = 0; i < matrix.size(); i++) {
            for (int j = 0; j < matrix[0].size(); j++) {
                sum += abs(matrix[i][j]);
                if (matrix[i][j] < 0) freq++;
                m = min(m, abs(matrix[i][j])); 
            }
        }
        if ((freq & 1) == 0) return sum;
        else return sum - 2 * m;
    }
};

http://www.kler.cn/a/408302.html

相关文章:

  • 基于SSM的婚庆管理系统+LW示例参考
  • C++:用红黑树封装map与set-1
  • Unity-添加世界坐标系辅助线
  • 如何使用AWS Lambda构建一个云端工具(超详细)
  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:跨数据中心环境下的挑战与对策(上)(27 / 30)
  • K8S + Jenkins 做CICD
  • [Atcoder Beginner Contest 381 D]1122 Substring 题解
  • GWO-SVMD分解 | Matlab实现GWO-SVMD灰狼算法优化逐次变分模态分解
  • Linux应用编程(C语言编译过程)
  • vue2面试题10|[2024-11-24]
  • .NET新知识点笔记
  • 【STM32】GPIO(超详细)
  • 内存分配与回收策略
  • 设计模式——模板模式
  • (二)Sping Boot学习——Sping Boot注意事项
  • 【踩坑日记】【教程】如何在ubuntu服务器上配置公钥登录以及bug解决
  • 分布式数据库中间件可以用在哪些场景呢
  • 【Y20030006】基于php+mysql的课程学习网站的设计与实现(附源码 配置 文档)
  • w055基于web的服装生产管理的设计与实现
  • 【设计模式】如何用C++实现适配器模式
  • Odoo :免费且开源的农牧行业ERP管理系统
  • 什么是 C++ 中的类型别名和 using 声明?如何使用类型别名和 using 声明?
  • Ultiverse 和web3新玩法?AI和GameFi的结合是怎样
  • RT-DETR融合[ECCV 2018]RCAN中的RCAB模块及相关改进思路
  • 《C++智能合约与区块链底层交互全解析:构建坚实的去中心化应用桥梁》
  • 微知-lspci访问到指定的PCIe设备的几种方式?(lspci -s bus;lspci -d devices)