棋子翻转-java
2017-11-09 23:19
162 查看
时间限制:3秒 空间限制:32768K 热度指数:21537
本题知识点: 模拟 编程基础 数组
算法知识视频讲解
在4x4的棋盘上摆满了黑白棋子,黑白两色的位置和数目随机其中左上角坐标为(1,1),右下角坐标为(4,4),现在依次有一些翻转操作,要对一些给定支点坐标为中心的上下左右四个棋子的颜色进行翻转,请计算出翻转后的棋盘颜色。
给定两个数组A和f,分别为初始棋盘和翻转位置。其中翻转位置共有3个。请返回翻转后的棋盘。
测试样例:
本题知识点: 模拟 编程基础 数组
算法知识视频讲解
题目描述
在4x4的棋盘上摆满了黑白棋子,黑白两色的位置和数目随机其中左上角坐标为(1,1),右下角坐标为(4,4),现在依次有一些翻转操作,要对一些给定支点坐标为中心的上下左右四个棋子的颜色进行翻转,请计算出翻转后的棋盘颜色。给定两个数组A和f,分别为初始棋盘和翻转位置。其中翻转位置共有3个。请返回翻转后的棋盘。
测试样例:
[[0,0,1,1],[1,0,1,0],[0,1,1,0],[0,0,1,0]],[[2,2],[3,3],[4,4]]
返回:[[0,1,1,1],[0,0,1,0],[0,1,1,0],[0,0,1,0]]
很棒的一道题,大概题意是以那三个位置为中心的左右上下的棋子由1变0,或者由0变1,然后可能会不断变化最后可能变回去。
然后看了一下别人的代码,思路是分四种情况。分别计算有上棋子的情况、有下棋子、有左棋子、有右棋子的情况。
import java.util.*; 4000 public class Flip { public int[][] flipChess(int[][] A, int[][] f) { // write code here for(int i=0;i<f.length;i++)//以翻转位置为中心 { int x=f[i][0]-1; int y=f[i][1]-1; if(x>0) A[x-1][y]^=1; if(x<A.length-1) A[x+1][y]^=1; if(y>0) A[x][y-1]^=1; if(y<A[0].length-1) A[x][y+1]^=1; } return A; } }
相关文章推荐
- JAVA面试题:棋子翻转
- 美团-棋子翻转-Java
- 翻转单词顺序(Java实现)
- 原串翻转Java实现
- 字符串翻转算法-JAVA
- 关于一道J笔试或者机试题的Java实现:从键盘输入一串字符,翻转后输出(要求不使用string相关类即对象)
- 用Java翻转一个英文句子
- 剑指offer-翻转单词顺序列-java
- Java实现单链表翻转
- java--整数翻转后相加
- Java实现单链表翻转
- Java实现两人五子棋游戏(三) 画出棋子
- [编程题] 棋子翻转
- 剑指Offer 42题 翻转单词顺序 Java版
- (Java)输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,句子中单词以单个空格符隔开
- (Java) LeetCode 25. Reverse Nodes in k-Group —— k个一组翻转链表
- Java 写一个方法判断一个字符串是否对称 "asdfgasdfg"、编写一个程序,将下面的一段文本中的各个单词的字母顺序翻转,
- leetcode解题之24. Swap Nodes in Pairs java 版(成对翻转链表)
- Java - 计蒜客 - 矩阵翻转
- Java中Image的水平翻转、缩放与自由旋转操作