2023-05-15LeetCode每日一题(按列翻转得到最大值等行数)

这篇具有很好参考价值的文章主要介绍了2023-05-15LeetCode每日一题(按列翻转得到最大值等行数)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2023-05-15每日一题

一、题目编号

1072. 按列翻转得到最大值等行数

二、题目链接

点击跳转到题目位置

三、题目描述

给定 m x n 矩阵 matrix 。

你可以从中选出任意数量的列并翻转其上的 每个 单元格。(即翻转后,单元格的值从 0 变成 1,或者从 1 变为 0 。)

返回 经过一些翻转后,行与行之间所有值都相等的最大行数

四、解题代码

class Solution {
    unordered_map<string, int> hash;
public:
    int maxEqualRowsAfterFlips(vector<vector<int>>& matrix) {
        int m = matrix.size();
        int n = matrix[0].size();
        for(int i = 0; i < m; ++i){
            string tmp;
            for(int j = 0; j < n; ++j){
                tmp += char(matrix[i][j] + '0');
            }
            if(tmp[0] == '1'){
                for(int k = 0; k < n; ++k){
                    if(tmp[k] == '0'){
                        tmp[k] = '1';
                    } else{
                        tmp[k] = '0';
                    }
                }
            }   
            hash[tmp]++;
        }
        int max0 = 0;
        for(auto iter = hash.begin(); iter != hash.end(); ++iter){
            max0 = max(max0, iter->second);
        }
    return max0;
    }
};

五、解题思路

(1) 首先思考一个问题,如果光给一行元素的话,那么行与行之间所有值都相等的最大行数是多少。那么很显然,是1。

(2) 接着思考下一个问题,如果光给两行元素的话,那么行与行之间所有值都相等的最大行数是多少。那么很显然,至少为1,可能为2。那么怎么可能为2呢。
假设两行为 1 1 1 和 1 1 1(本身就相等),那么一定为2,。如果为 1 1 0 和 0 0 1,那么也为2,翻转第三列即可。

(3) 那么我们便拥有了思路,得出每一行的数字字符串,如果字符串第一个字符为‘0’,那么直接在哈希表中将该种字符串的数量+1,如果第一个字符为‘1’,那么先翻转该字符串,再直接在哈希表中将该种字符串的数量加一。

(4) 最后返回哈希表中某种字符串数量的最大值即可。文章来源地址https://www.toymoban.com/news/detail-445905.html

到了这里,关于2023-05-15LeetCode每日一题(按列翻转得到最大值等行数)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【LeetCode - 每日一题】1073. 负二进制数相加 (2023.05.18)

    基数为 -2 。 实现两个 0/1 数组串的加法。 这是一道模拟题。 设 arr1[i] 和 arr2[i] 是数组 arr1 和 arr2 从低到高的第 i 位数。 首先回顾普通的二进制数的相加,从低位开始计算,在计算的同时维护用一个变量 carry 维护进位信息,因此,对于第 i 位的结果 ans[i] = arr1[i] + arr2[i] + c

    2024年02月05日
    浏览(49)
  • 2023-09-05 LeetCode每日一题(从两个数字数组里生成最小数字)

    点击跳转到题目位置 给你两个只包含 1 到 9 之间数字的数组 nums1 和 nums2 ,每个数组中的元素 互不相同 ,请你返回 最小 的数字,两个数组都 至少 包含这个数字的某个数位。 示例 1: 示例 2: 提示: 1 = nums1.length, nums2.length = 9 1 = nums1[i], nums2[i] = 9 每个数组中,元素 互不相

    2024年02月09日
    浏览(46)
  • Leetcode每日一题:15. 三数之和(2023.7.9 C++)

    目录 15. 三数之和 题目描述: 实现代码与解析: 双指针 原理思路:         给你一个整数数组  nums  ,判断是否存在三元组  [nums[i], nums[j], nums[k]]  满足  i != j 、 i != k  且  j != k  ,同时还满足  nums[i] + nums[j] + nums[k] == 0  。请 你返回所有和为  0  且不重复的三元组

    2024年02月13日
    浏览(33)
  • Leetcode每日一题:18. 四数之和(2023.7.15 C++)

    目录 18. 四数之和 题目描述: 实现代码与解析: 双指针 原理思路:         给你一个由  n  个整数组成的数组  nums  ,和一个目标值  target  。请你找出并返回满足下述全部条件且 不重复 的四元组  [nums[a], nums[b], nums[c], nums[d]]  (若两个四元组元素一一对应,则认为

    2024年02月16日
    浏览(46)
  • 2023-08-15 LeetCode每日一题(字符串中的查找与替换)

    点击跳转到题目位置 你会得到一个字符串 s (索引从 0 开始),你必须对它执行 k 个替换操作。替换操作以三个长度均为 k 的并行数组给出:indices, sources, targets。 要完成第 i 个替换操作: 检查 子字符串 sources[i] 是否出现在 原字符串 s 的索引 indices[i] 处。 如果没有出现, 什么

    2024年02月12日
    浏览(33)
  • 【LeetCode每日一题】410. 分割数组的最大值

    2024-1-21 410. 分割数组的最大值 思路:二分查找+贪心 利用二分查找法和贪心算法来求解将数组分割为m个非空连续子数组,使得每个子数组的和的最大值最小 首先,我们需要确定二分查找的左右边界。左边界 left 初始化为数组中的最大值,右边界 right 初始化为数组所有元素的

    2024年01月23日
    浏览(31)
  • LeetCode·每日一题·822. 翻转卡片游戏·哈希

    作者:小迅 链接:https://leetcode.cn/problems/card-flipping-game/solutions/2368969/ha-xi-zhu-shi-chao-ji-xiang-xi-by-xun-ge-7ivj/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 根据题意,只要有数字满足 fronts[i]=backs[i],那么 fronts[i] 绝对不可能是

    2024年02月14日
    浏览(26)
  • 2023-07-26力扣每日一题-区间翻转线段树

    链接: 2569. 更新数组后处理求和查询 题意: 给两个等长数组nums1和nums2,三个操作: 操作1:将nums1的 [l,r] 翻转(0变1,1变0) 操作2:将 nums2[any] 变成 nums2[any]+nums1[any]*p ,p由操作给出,any表示数组里的每一位 操作3:查询nums2的和 解: 由于每次更新nums2的时候,不需要考虑

    2024年02月15日
    浏览(30)
  • 【力扣每日一题】2023.8.8 任意子数组和的绝对值的最大值

    目录 题目: 示例: 分析: 代码: 题目给我们一个数组,让我们找出它的绝对值最大的子数组的和。 这边的子数组是要求连续的,让我们找出一个元素之和的绝对值最大的连续子数组。 要绝对值最大,那么就是两种情况,最大的正数以及最小的负数,所以我们可以兵分两路

    2024年02月13日
    浏览(32)
  • 2023-07-15力扣每日一题

    链接: 18. 四数之和 题意: 一个数组n,一个目标值t,在数组内找四个数字和等于t,求能有多少种组合 解: 0716:一看怎么昨天卡没打,原来昨天做的第一题不是每日一题,麻了 n很小,200,那么 先排序 ,然后弄一个 双指针开双循环 l,r ,确定每个组合的最大数字-数字4和最

    2024年02月16日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包