【LeetCode】每日一题 2024_11_15 最少翻转次数使二进制矩阵回文 I(模拟、矩阵遍历(竖着遍历))

news/2024/11/16 13:00:13/

前言

每天和你一起刷 LeetCode 每日一题~

决定在前言里面加上新内容!新增模块:“本期看点”

本期看点:如何竖着遍历矩阵

LeetCode 启动!

题目:leetcode.cn/problems/minimum-number-of-flips-to-make-binary-grid-palindromic-i/description/?envType=daily-question&envId=2024-11-15" rel="nofollow">最少翻转次数使二进制矩阵回文 I

代码与解题思路

先读题:题目要求我们找到把矩阵的行或者列变成回文形式的最小次数

首先需要思考的是,怎么样计算把矩阵的行或列变成回文需要的次数?仔细想想可以知道,只有一种情况,那就是遍历矩阵的时候,发现每行/列第一个元素和最后一个元素值不同就需要进行一次转换,次数++ . . . 以此类推

即,我们只需要遍历一遍矩阵就能得到结果,那将行变成回文和列变成回文的情况都遍历一遍,取他们的最小值就能得到题目要求的结果啦,代码如下:

func countGoodNodes(edges [][]int) (ans int) {
func minFlips(grid [][]int) int {// 计算把行都变成回文的次数和把列都变成回文的次数都算出来,取最小即可n, m := len(grid), len(grid[0])// 行的回文次数cntRow := 0for _, row := range grid {for j := 0; j < m/2; j++ {if row[j] != row[m-1-j] {cntRow++}}}// 列的回文次数cntCol := 0for j := 0; j < m; j++ {for i, row := range grid[:n/2] {if row[j] != grid[n-1-i][j] {cntCol++}}}return min(cntRow, cntCol)
}

行的遍历比较简单,直接从左往右,从上到下的正常顺序遍历即可,我们都写过很多了,但竖着遍历直到现在依然让我挺难受的

竖着遍历的核心在于,让 j 也就是二维数组的第二个下标在第一层循环,而第一个下标在第二层循环,但是两个下标本身的位置不变,假如不用语法糖,纯净的遍历代码如下:

func minFlips(grid [][]int) int {// 计算把行都变成回文的次数和把列都变成回文的次数都算出来,取最小即可n, m := len(grid), len(grid[0])// 行的回文次数cntRow := 0for i := 0; i < n; i++ {for j := 0; j < m/2; j++ {if grid[i][j] != grid[i][m-1-j] {cntRow++}}}// 列的回文次数cntCol := 0for j := 0; j < m; j++ {for i := 0; i < n/2; i++ {if grid[i][j] != grid[n-1-i][j] {cntCol++}}}return min(cntRow, cntCol)
}

每天进步一点点,我们明天不见不散~

可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。


http://www.ppmy.cn/news/1547452.html

相关文章

生成自签名证书并配置 HTTPS 使用自签名证书

生成自签名证书 1. 运行 OpenSSL 命令生成证书和私钥 在终端中输入以下命令&#xff0c;生成自签名证书和私钥文件&#xff1a; sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout self_signed.key -out self_signed.pem-x509&#xff1a;生成自签名证书。…

DB-GPT系列(五):DB-GPT六大基础应用场景part2

前面文章《DB-GPT系列&#xff08;四&#xff09;&#xff1a;DB-GPT六大基础应用场景part1》讲了DB-GPT六大基础应用场景中的基础问答、知识库问答、Chat Excel功能&#xff0c;这篇文章继续介绍剩下的3个基础应用场景&#xff1a;Chat DB、Chat Data、Chat Dashboard。 一、…

C++ Primer Plus第三章笔记《数据处理》

这里的笔记区别于精简基础&#xff0c;会记录较多C的细节 文章目录 前言一、简单变量1.1 变量名以下是一些有效和无效的C名称 1.2 整型1.3 整型short、int、long和long long数据类型对应的字节和能存储的最大值 1.4 无符号类型越界问题 1.5 整型字面值进制转换 1.6 char类型:字…

[SaaS] 数禾科技 AIGC生成营销素材

https://zhuanlan.zhihu.com/p/923637935https://zhuanlan.zhihu.com/p/923637935

入侵检测算法平台部署LiteAIServer视频智能分析平台行人入侵检测算法:科技守护安全的新篇章

在现代化城市快速发展的背景下&#xff0c;安全防范已成为城市管理与社会生活中不可或缺的一环。随着人工智能、大数据、物联网等技术的飞速发展&#xff0c;智能化安防系统正逐步改变着传统的安全防护模式&#xff0c;特别是在行人入侵检测领域&#xff0c;视频智能分析平台Li…

git如何开启SSH?

git做代码管理用Http的方式有诸多限制&#xff0c;用SSH的方式就比较省事。 git如何开启SSH&#xff1f; 方法很简单&#xff0c;关键的命令&#xff1a;ssh-keygen-t rsa-C“配置自己邮箱” 通过git brash &#xff0c;打开 git 命令行工具&#xff0c;输入以上命令&#xf…

一文讲清楚人工智能自然语言处理中的数据预处理(数据清洗)

一、定义 在自然语言处理&#xff08;NLP&#xff09;中&#xff0c;数据预处理&#xff0c;又可称数据清洗&#xff0c;是指将原始文本数据转换成适合机器学习模型处理的格式的过程。 二、实例讲解 上面的定义阐述有些僵硬吧&#xff0c;笔者思考了好久&#xff0c;给出下面这…

从基础到进阶,Dockerfile 如何使用环境变量

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 什么是 Dockerfile 环境变量?🔖1. `ENV` 指令🔖2. `ARG` 指令🔖语法:🔖使用 `ARG` 的例子:📝 如何使用环境变量提高 Dockerfile 的灵活性🔖1. 动态配置环境🔖2. 配置不同的运行环境🔖3. 多…