leetcode-840-Magic Squares In Grid
题目描述:
A 3 x 3 magic square is a 3 x 3 grid filled with distinct numbers from 1 to 9 such that each row, column, and both diagonals all have the same sum.
Given an grid
of integers, how many 3 x 3 "magic square" subgrids are there? (Each subgrid is contiguous).
Example 1:
Input: [[4,3,8,4],
[9,5,1,9],
[2,7,6,2]]
Output: 1
Explanation:
The following subgrid is a 3 x 3 magic square:
438
951
276 while this one is not:
384
519
762 In total, there is only one magic square inside the given grid.
Note:
1 <= grid.length <= 10
1 <= grid[0].length <= 10
0 <= grid[i][j] <= 15
要完成的函数:
int numMagicSquaresInside(vector<vector<int>>& grid)
说明:
1、这道题给定一个二维的vector,也就是一个矩阵,要求判断这个矩阵中含有多少个magic三维矩阵,返回数量。
magic三维矩阵的定义是,所有数值都在1-9之间(闭区间),且每一行、每一列和每条对角线的和都相等(也就是15)。
2、这是一道简单题,我们直接暴力处理就好了。
首先,我们判断每个子矩阵的中心点是不是为5。这一步可以过滤掉很多子矩阵。
接着,判断符号第一个条件的子矩阵的所有9个数,是不是都在1-9之间。在测试样例中,出现了包含0和10这样的数的子矩阵,也可以形成magic矩阵。
最后,判断三行、三列和两条对角线的和是否为15。
代码构造如下:(附详解)
int numMagicSquaresInside(vector<vector<int>>& grid)
{
int hang=grid.size(),lie=grid[0].size(),res=0;
for(int i=1;i<=lie-2;i++)
{
for(int j=1;j<=lie-2;j++)//从第二行第二列开始判断中心点,直到倒数第二行倒数第二列结束
{
if(grid[i][j]==5)//满足第一个条件
{
if(grid[i-1][j-1]<=9&&grid[i-1][j-1]>=1&&
grid[i-1][j]<=9&&grid[i-1][j]>=1&&
grid[i-1][j+1]<=9&&grid[i-1][j+1]>=1&&
grid[i][j-1]<=9&&grid[i][j-1]>=1&&
grid[i][j+1]<=9&&grid[i][j+1]>=1&&
grid[i+1][j-1]<=9&&grid[i+1][j-1]>=1&&
grid[i+1][j]<=9&&grid[i+1][j]>=1&&
grid[i+1][j+1]<=9&&grid[i+1][j+1]>=1)//判断是否都在1-9之间
{
if((grid[i-1][j-1]+grid[i-1][j]+grid[i-1][j+1]==15)&&
(grid[i][j-1]+grid[i][j]+grid[i][j+1]==15)&&
(grid[i+1][j-1]+grid[i+1][j]+grid[i+1][j+1]==15)&&
(grid[i-1][j-1]+grid[i][j-1]+grid[i+1][j-1]==15)&&
(grid[i-1][j]+grid[i][j]+grid[i+1][j]==15)&&
(grid[i-1][j+1]+grid[i][j+1]+grid[i+1][j+1]==15)&&
(grid[i-1][j-1]+grid[i][j]+grid[i+1][j+1]==15)&&
(grid[i-1][j+1]+grid[i][j]+grid[i+1][j-1]==15))//判断三行三列和两条对角线的和是否为15
res++;
}
}
}
}
return res;
}
上述代码实测5ms,因为服务器没有充分的提交量,所以没有打败的百分比。
leetcode-840-Magic Squares In Grid的更多相关文章
- 【Leetcode_easy】840. Magic Squares In Grid
problem 840. Magic Squares In Grid solution: class Solution { public: int numMagicSquaresInside(vect ...
- 840. Magic Squares In Grid (5月27日)
开头 这是每周比赛中的第一道题,博主试了好几次坑后才勉强做对了,第二道题写的差不多结果去试时结果比赛已经已经结束了(尴尬),所以今天只记录第一道题吧 题目原文 Magic Squares In Gri ...
- 【LeetCode】840. Magic Squares In Grid 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 利用河图规律 暴力解法 日期 题目地址:https: ...
- [LeetCode] 840. Magic Squares In Grid_Easy
A 3 x 3 magic square is a 3 x 3 grid filled with distinct numbers from 1 to 9 such that each row, co ...
- 840. Magic Squares In Grid ——weekly contest 86
题目链接:https://leetcode.com/problems/magic-squares-in-grid/description attention:注意给定的数字不一定是1-9. time: ...
- 840. Magic Squares In Grid
class Solution { public: int numMagicSquaresInside(vector<vector<int>>& grid) { ; in ...
- [LeetCode] Magic Squares In Grid 网格中的神奇正方形
A 3 x 3 magic square is a 3 x 3 grid filled with distinct numbers from 1 to 9 such that each row, co ...
- LeetCode算法题-Magic Squares In Grid(Java实现)
这是悦乐书的第326次更新,第349篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第196题(顺位题号是840).3 x 3魔方是一个3 x 3网格,填充了从1到9的不同 ...
- C#LeetCode刷题之#840-矩阵中的幻方(Magic Squares In Grid)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3752 访问. 3 x 3 的幻方是一个填充有从 1 到 9 的不 ...
- [Swift]LeetCode840. 矩阵中的幻方 | Magic Squares In Grid
A 3 x 3 magic square is a 3 x 3 grid filled with distinct numbers from 1 to 9 such that each row, co ...
随机推荐
- ubuntu下的文件夹命名
本文主要学习引用了http://dbua.iteye.com/blog/943945的方法.分享快乐,嘿嘿. 由于本人菜鸟一枚,所以ubuntu选的中文,但是安装后会发现文件夹名称,什么桌面啦,下载啦 ...
- windows10 查看进程端口的情况
以程序 winnfsd.exe 为例: 1 查看进程号 PID C:\Users\leo>tasklist|findstr winnfsd.exe winnfsd.exe ...
- cucumber安装步骤
#Start Guide##Environment###1. Install Ruby Verify your installation by running ruby -v in a termina ...
- 使用JFinal框架连接数据库,实现注册、登录功能
使用JFinal框架连接数据库,实现注册.登录功能 1.在Eclipse中新建Dynamic Web project项目 2.导入jfinal-2.2-bin-with-src.jar.c3p0-0. ...
- C程序设计语言(2)文摘
第一章 导言 1.1 入门 1.2 变量与算术表达式 1.3 for语句 1.4 符号常量 1.5 字符输入输出 #include "stdafx.h" main(int argc ...
- 查找mysql的my.cnf位置
1. which mysqld /user/local/mysql/bin/mysqld --verbose --help |grep -A 1 'Default options'
- Oracle学习笔记(三)
五.操作表 1.表分为行和列 约定:每行数据唯一性,每列数据同类性,每列列名唯一性. 2.数据类型 字符型 -- 固定长度的字符类型 字符类型:CHAR(n)(MAX n=2000).NCHAR(MA ...
- Oracle学习笔记(十一)
例外: 例外是程序设计语言提供的一种功能,用来增强程序的健壮性和容错性. 例外分为:系统例外自定义例外 系统例外分为:No_data_found(没有找到数据).Too_many_rows(selec ...
- Android-MediaRecorder录像机(视频)
在上一篇博客,Android-MediaRecorder录制音频,中讲解了使用Android API MediaRecorder 刻录音频,这篇博客主要是介绍 使用MediaRecorder刻录(视频 ...
- MSP430 G2553 LaunchPad设置GPIO
一. 背景知识:逻辑运算符的使用 当程序初始化时,对于复位状态有不确定性的寄存器(如PxOUT),建议采用直接赋值:其他情况下最好使用逻辑运算符修改寄存器. 直接赋值 REGISTER = 0b111 ...