当前位置: 首页 > news >正文

力扣每日一题 - 999. 可以被一步捕获的棋子数

题目

还需要你前往力扣官网查看详细的题目要求 地址

1.给定一个 8 x 8 的棋盘,只有一个 白色的车,用字符 'R' 表示。棋盘上还可能存在白色的象 'B' 以及黑色的卒 'p'。空方块用字符 '.' 表示。2.车可以按水平或竖直方向(上,下,左,右)移动任意个方格直到它遇到另一个棋子或棋盘的边界。如果它能够在一次移动中移动到棋子的方格,则能够 吃掉 棋子。3.注意:车不能穿过其它棋子,比如象和卒。这意味着如果有其它棋子挡住了路径,车就不能够吃掉棋子。4.返回白车将能 吃掉 的 卒的数量。

思路

  • 先找到R的位置
  • 根据R[0]的位置找到 横向的 B 和 p的 index
  • 根据R[1]的位置找到 竖向的 B 和 p的 index
  • 然后 横向的 数组合并, 并根据合并后数组找到find的位置(index),查询index-1和index+1是否在横向的p里面
  • 然后 竖向的 数组合并, 并根据合并后数组找到find的位置(index),查询index-1和index+1是否在竖向的p里面

代码

  let arr = [[".", ".", ".", ".", ".", ".", ".", "."],[".", ".", ".", "p", ".", ".", ".", "."],[".", ".", ".", "R", ".", ".", ".", "p"],[".", ".", ".", ".", ".", ".", ".", "."],[".", ".", ".", ".", ".", ".", ".", "."],[".", ".", ".", "p", ".", ".", ".", "."],[".", ".", ".", ".", ".", ".", ".", "."],[".", ".", ".", ".", ".", ".", ".", "."],];var numRookCaptures = function (board) {let R = []; // 车let heng = {B: [], // 象p: [], // 卒};let shu = {B: [],p: [],};R[0] = board.findIndex((item) => item.includes("R"));R[1] = board[R[0]].indexOf("R");heng.B = board[R[0]].map((item, index) => {if (item === "B") {return index;}});heng.p = board[R[0]].map((item, index) => {if (item === "p") {return index;}});shu.B = board.map((item, index) => {if (item[R[1]] === "B") {return index;}});shu.p = board.map((item, index) => {if (item[R[1]] === "p") {return index;}});let numberHeng = sortList(heng.B, heng.p, R[1]);let numberShu = sortList(shu.B, shu.p, R[0]);return numberHeng + numberShu;};function sortList(arrOne, arrTwo, find) {let number = 0;let arr = [...arrOne, ...arrTwo, find].sort((a, b) => {return a - b;});let index = arr.indexOf(find);if (arrTwo.includes(arr[index - 1]) && arr[index - 1] !== undefined) {number = number + 1;}if (arrTwo.includes(arr[index + 1]) && arr[index + 1] !== undefined) {number = number + 1;}return number;}console.log(numRookCaptures(arr));

http://www.mrgr.cn/news/79519.html

相关文章:

  • 默认插槽,具名插槽(v-slot:具名,name=‘ ‘),作用域插槽
  • Ubuntu Linux 图形界面工具管理磁盘分区和文件系统(八)
  • 电子商务人工智能指南 1/6 - 搜索、广告和发现
  • 1-1 C语言链表
  • 报错:Invalid HTTP method: PATCH executing PATCH http://XXX.XXX
  • HarmonyOS(63) ArkUI 自定义占位组件NodeContainer
  • centos部署SkyWalking并在springcloud项目中用法举例
  • openharmony开发资料合集
  • 13.在 Vue 3 中使用OpenLayers加载鹰眼控件示例教程
  • 18.[极客大挑战 2019]BabySQL1
  • 书后习题答案:《Python程序设计基础(第2版)》,电子工业出版社,2020.01
  • SpringBoot自动配置底层核心源码
  • 电子商务人工智能指南 2/6 - 需求预测和库存管理
  • 【开源】A064—基于JAVA的民族婚纱预定系统的设计与实现
  • FastAPI解决跨域报错net::ERR_FAILED 200 (OK)
  • 木棍的长度
  • (七)腾讯cloudstudio+Stable-Diffusion-webui AI绘画教程-安装Stable-Diffusion-WebUI
  • 结合Spring Security的两种用户登陆认证以及授权方案
  • Linux下mysql环境的搭建
  • React第十三节开发中常见问题之(视图更新、事件处理)