840. Magic Squares In Grid (5月27日)
开头
这是每周比赛中的第一道题,博主试了好几次坑后才勉强做对了,第二道题写的差不多结果去试时结果比赛已经已经结束了(尴尬),所以今天只记录第一道题吧
题目原文
- 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 N x N 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 = grid[0].length <= 10
0 <= grid[i][j] <= 15
简单翻译一下
先给出幻方的定义:3×3的矩阵,矩阵中元素由1-9组成,并且每一行、每一列、俩条对角线三个元素之和相等
(ps,我刚开始没看清楚幻方的定义,吃了一些亏)
给定一个N*M的矩阵,其中有多少个三阶幻方?
例子
输入矩阵:[ [4,3,8,4],
[9,5,1,9],
[2,7,6,2] ]
输出结果:1
解释
矩阵 [ [4,3,8],
[9,5,1],
[2,7,6] ]
是一个三阶幻方
而另一个矩阵:[ [3,8,4],
[5,1,9],
[7,6,2] ]
不是三阶幻方
备注:
- 给定矩阵的维度M×N中,1<=M,N<10
矩阵中每个元素的值, 0<=a[m][n]<=15
解答
class Solution {
public:
int numMagicSquaresInside(vector<vector<int>>& grid) {
int flag=0;
vector<int> v{1,2,3,4,5,6,7,8,9};
if(grid.size()<2||(*grid.begin()).size()<2)
return flag;
for(int i=0;i<grid.size()-2;++i){
for(int j=0;j<(*grid.begin()).size()-2;++j){
int sum=15;
if( (grid[i+1][j+1]==5) &&
(grid[i][j]>=1)&&(grid[i][j]<=9) &&
(grid[i+1][j]>=1)&&(grid[i+1][j]<=9) &&
(grid[i+2][j]>=1)&&(grid[i+2][j]<=9) &&
(grid[i][j+1]>=1)&&(grid[i][j+1]<=9) &&
(grid[i+2][j+1]>=1)&&(grid[i+2][j+1]<=9) &&
(grid[i][j+2]>=1)&&(grid[i][j+2]<=9) &&
(grid[i+1][j+2]>=1)&&(grid[i][j+2]<=9) &&
(grid[i+2][j+2]>=1)&&(grid[i][j+2]<=9) &&
(grid[i][j]+grid[i][j+1]+grid[i][j+2]==sum) &&
(grid[i+1][j]+grid[i+1][j+1]+grid[i+1][j+2]==sum) &&
(grid[i+2][j]+grid[i+2][j+1]+grid[i+2][j+2]==sum) &&
(grid[i][j]+grid[i+1][j]+grid[i+2][j]==sum) &&
(grid[i][j+1]+grid[i+1][j+1]+grid[i+2][j+1]==sum) &&
(grid[i][j+2]+grid[i+1][j+2]+grid[i+2][j+2]==sum) &&
(grid[i][j]+grid[i+1][j+1]+grid[i+2][j+2]==sum) &&
(grid[i][j+2]+grid[i+1][j+1]+grid[i+2][j]==sum)
)
++flag;
}
}
return flag;
}
};
错误分析
第一次
没有考虑到给定的矩阵维度小于3×3
错误例子:
[[8]]
所以才加上了如下这个判断条件:
if(grid.size()<2||(*grid.begin()).size()<2)
return flag;
第二次
没有注意到三阶幻方的定义中元素是由1-9构成的,之前自认为只要每行每列对角线和相等就行
错误例子1
[ [10,3,5],
[1,6,11],
[7,9,2] ]
每行每列对角线和相等,但和不是15,同时元素不是在1-9内
错误例子2
[ [1,8,6],
[10,5,0],
[4,2,9] ]
每行每列对角线和相等,和是15,但元素不是在1-9内
笔记
- 挨个读取对元素,然后进行判断,综上可知,判断是不是三阶幻方的条件如下:
元素在1-9内+每行每列对角线和相等(=15)
注:按题目要求所构成的三阶幻方的中心元素必然是5,可优先判别,因为C++判断一系列‘与’构成的逻辑时,只要前面的出错了就不会进行判断后面的条件
840. Magic Squares In Grid (5月27日)的更多相关文章
- 【Leetcode_easy】840. Magic Squares In Grid
problem 840. Magic Squares In Grid solution: class Solution { public: int numMagicSquaresInside(vect ...
- 【LeetCode】840. Magic Squares In Grid 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 利用河图规律 暴力解法 日期 题目地址:https: ...
- 840. Magic Squares In Grid
class Solution { public: int numMagicSquaresInside(vector<vector<int>>& grid) { ; in ...
- 840. Magic Squares In Grid ——weekly contest 86
题目链接:https://leetcode.com/problems/magic-squares-in-grid/description attention:注意给定的数字不一定是1-9. time: ...
- 腾讯QQ认证空间4月27日已全面开放申请,欲进军自媒体
今天看到卢松松的博客上爆出,腾讯QQ认证空间4月27日已全面开放申请的消息,这一消息出来, 马浩周根据提示方法进行申请,下面先说说腾讯QQ认证空间的申请方法: QQ认证空间开放申请公告地址:http: ...
- 2016年12月27日 星期二 --出埃及记 Exodus 21:22
2016年12月27日 星期二 --出埃及记 Exodus 21:22 "If men who are fighting hit a pregnant woman and she gives ...
- 2016年11月27日 星期日 --出埃及记 Exodus 20:18
2016年11月27日 星期日 --出埃及记 Exodus 20:18 When the people saw the thunder and lightning and heard the trum ...
- 2016年10月27日 星期四 --出埃及记 Exodus 19:12
2016年10月27日 星期四 --出埃及记 Exodus 19:12 Put limits for the people around the mountain and tell them, `Be ...
- 2016年6月27日 星期一 --出埃及记 Exodus 14:24
2016年6月27日 星期一 --出埃及记 Exodus 14:24 During the last watch of the night the LORD looked down from the ...
随机推荐
- iframe 子页面改变父页面样式
iframe 子窗口调节父窗口样式: $(window.parent.document).find("body").attr("style"," 父元 ...
- 无法远程访问Mysql的解决方案
现在在很多的互联网公司对于mysql数据库的使用已经是不可阻挡的趋势了,所以经常我们在项目开始的时候就会做的事情就是找一台Linux服务器,到上面去安装个mysql,然后在开始我们的数据表的导入工作, ...
- python的继承多态以及异常处理
1.单继承 # 动物类 class Animal(object): def __init__(self, name): self. __name = name def run(self): print ...
- win10 x64 python3.6 pycharm 安装statsmodels
在pycharm下,安装statsmodels,会出现需要vc++14.0的错误提示. 这时可以到网站 https://www.lfd.uci.edu/~gohlke/pythonlibs/#word ...
- Rabbit MQ config文件解析
Rabbit MQ config文件解析 tcp_listeners:用于监听AMQP连接的端口或主机名/对(不带TLS),默认端口:5672 2.numtcpacceptors :将接受TCP侦听器 ...
- [问题记录]libpomelo工程调整编译链接错误
1. 描述: 如下图所示,出现链接错误.那么链接问题一般也就两块设置: (1)包含路径Additional Library Directories (2)lib库的包含Additional Depen ...
- c# 知识学习
1.C#基础知识梳理系列 2.详解C#委托,事件与回调函数 3.C#制作Windows service
- Jquery学习---一键上传
一键上传 jar包下载 jquery代码 $(function () { $(".uploadfile").upload({ action: 'CourseXMLFileUploa ...
- .Net深入体验与实践第一章
什么是委托?委托和事件是什么关系? 我的理解是委托朋友,事件是一个事情比如,中午12点要吃饭了,咱家搞忘了!还在继续嗨皮,我的朋友会叫我与他一起吃饭. 什么事反射? 可以获取.Net中的每个类型(类, ...
- IE和Firefox浏览器CSS兼容性技巧整理
转自:http://homepage.yesky.com/185/11484185all.shtml#p11484185 CSS兼容常用技巧(1) 更多精彩相关文章推荐: 各大浏览器 CSS3 和 H ...