zoukankan      html  css  js  c++  java
  • leetcode 861 翻转矩阵后的得分

    1. 题目描述

     2.思路分析:

    1. 首先这里的翻转分为了行翻转和列翻转,我们这里只需要求如何翻转后得到最大值,有点贪心的思想,因为最大值一定是固定的

    至于是什么路径到达的最大值不是我们所关心的,我们直接从最大的角度去考虑,为了最大,那么首先保证的是每行的第一列为1

    ,如果有哪个行的第一列不为1的话,那么就行翻转下,然后剩下就是列的问题,第一列已经被固定了,所以就不需要被考虑了,所以

    直接从第二列开始考虑,从第二列开始就是比较1和0的个数谁更多了,如果0多的话,就需要列翻转了,大体思路就是这样

    至于题解的代码写的比较省略,主要体现到那个最大值的比较,那个其实就是行翻转,因为比较了0和1的个数,返回值其实就是翻转后的结果了

    3.代码

    class Solution {
    public:
        int matrixScore(vector<vector<int>>& A) {
            int m=A.size(),n=A[0].size(); //行数
            int ret=m*(1<<(n-1));
            for(int j=1;j<n;j++)
            {
                int tmp=0;
                for(int i=0;i<m;i++)
                {
                    if(A[i][0]==1)
                    {
                        tmp+=A[i][j];
                    }else
                    {
                        tmp+=(1-A[i][j]);
                    }
                }
                int k1=max(tmp,m-tmp);
                ret+=k1*(1<<(n-j-1));
            }
            return ret;
        }
    };
  • 相关阅读:
    JQ_浏览器窗口改变触发
    5. 通过PHP反序列化进行远程代码执行
    2. 文件包含(150)
    1. md5 collision(50)
    4.xpath注入详解
    2.HTTP头注入
    1.5 xss漏洞修复
    1.4 DVWA亲测XSS漏洞
    1.如何绕过WAF(Web应用防火墙)
    1.3 xss原理分析与剖析(4)
  • 原文地址:https://www.cnblogs.com/YenKoc/p/14100297.html
Copyright © 2011-2022 走看看