欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 1958.力扣每日一题7/7 Java(100%解)

1958.力扣每日一题7/7 Java(100%解)

2024/10/26 0:52:16 来源:https://blog.csdn.net/Rangsh/article/details/140253182  浏览:    关键词:1958.力扣每日一题7/7 Java(100%解)
  • 博客主页:音符犹如代码
  • 系列专栏:算法练习
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

 

目录

思路

解题方法

时间复杂度

空间复杂度

Code 


思路

  • 首先将指定位置填充为给定颜色。然后针对八个方向进行合法性检查。
  • 对于每个方向,调用一个专门的方法来计算中间不同颜色的数量,并判断是否构成好线段。

解题方法

  • 通过提取 checkDirection 方法来处理对单个方向的检查逻辑,使得代码更具模块化和可读性。
  • 在 checkDirection 方法中,通过循环和条件判断来统计中间颜色的数量,并根据情况决定是否构成好线段。

时间复杂度

O(1)

空间复杂度

O(1)

Code

class Solution {public boolean checkMove(char[][] board, int rMove, int cMove, char color) {board[rMove][cMove] = color;int n = 8;char between = color == 'W'? 'B' : 'W';if (checkDirection(board, rMove, cMove, -1, 0, between) ||checkDirection(board, rMove, cMove, 1, 0, between) ||checkDirection(board, rMove, cMove, 0, -1, between) ||checkDirection(board, rMove, cMove, 0, 1, between) ||checkDirection(board, rMove, cMove, -1, -1, between) ||checkDirection(board, rMove, cMove, 1, 1, between) ||checkDirection(board, rMove, cMove, -1, 1, between) ||checkDirection(board, rMove, cMove, 1, -1, between)) {return true;}return false;}private boolean checkDirection(char[][] board, int r, int c, int dr, int dc, char between) {int cnt = 0;int row = r + dr;int col = c + dc;while (isValid(row, col) && board[row][col]!= '.') {if (board[row][col] == between) {cnt++;} else if (board[row][col] == board[r][c]) {if (cnt > 0) {return true;}break;}row += dr;col += dc;}return false;}private boolean isValid(int row, int col) {return row >= 0 && row < 8 && col >= 0 && col < 8;}
}

 

淡泊名利,动静相济,劳逸适度。——华佗

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com