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

字节青训营入门算法题:飞行棋分组

链接:飞行棋分组🔗🔗

题目

现在有一堆飞行棋棋子,每个棋子上标有数字序号。需要将这些棋子分成若干组,每组包含5个棋子,且组内所有棋子的数字序号必须相同。需要判断是否可以完成这样的分组。

解答

为了解决这个问题,我们可以使用以下步骤:

  1. 对棋子序号进行排序。
  2. 遍历排序后的棋子序号,检查每组连续相同序号的棋子数量是否为5。
  3. 如果在遍历过程中发现任何一组棋子数量不等于5,则返回 false
  4. 如果所有组都满足条件,则返回 true

知识点

  • 数组排序:使用 sort() 方法对数组进行排序。
  • 遍历数组:使用 for 循环遍历数组元素。
  • 条件判断:使用 if 语句来检查条件是否满足。

讲解

以下是代码实现,其中包含了对之前实现的修正:

function solution(nums) {// 将输入字符串转换为数字数组let pieces = nums.split(' ').map(Number);// 对棋子序号进行排序pieces.sort((a, b) => a - b);// 初始化起始和结束指针let start = 0;let end = 0;// 遍历排序后的棋子序号while (end < pieces.length) {// 移动结束指针直到遇到不同的棋子序号while (end < pieces.length && pieces[end] === pieces[start]) {end++;}// 检查当前组棋子数量是否为5if ((end - start) !== 5) {return false; // 如果不是5,则无法完成分组,返回false}// 更新起始指针到下一组start = end;}// 如果所有组都满足条件,返回truereturn true;
}
// 测试样例
console.log(solution("1 2 3 4 5")); // 输出 false
console.log(solution("1 1 1 1 2 1 2 2 2 2")); // 输出 true

这段代码首先将输入字符串转换为数字数组,并对数组进行排序。然后使用两个指针 startend 来遍历数组,检查每组连续相同序号的棋子数量是否为5。如果在任何点上不满足这个条件,函数会立即返回 false。如果所有组都满足条件,函数在结束时返回 true
在代码中,我修正了几个问题:

  • 输入应该是字符串,需要先转换为数组。
  • sort() 方法默认按照字符串排序,所以需要传递一个比较函数来正确排序数字。
  • end 的初始化应该为0,因为我们从数组的第一个元素开始。
  • 最后,返回值应该是布尔类型,而不是字符串。
http://www.lryc.cn/news/459161.html

相关文章:

  • # 执行 rpm -qa | grep qq 查询软件安装情况时报错 数据库损坏 db3 error(-30974)
  • 离线服务器上复现G3SR论文实验
  • Android 未来可能支持 Linux 应用,Linux 终端可能登陆 Android 平台
  • PostgreSQL学习笔记十四:PL/Python自定义函数
  • 计算机毕业设计 | springboot商城售后管理系统 购物平台(附源码)
  • (全网独家)面试要懂运维真实案例:HDFS重新平衡(HDFS Balancer)没触发问题排查
  • 【数据结构笔记】搜索树
  • 如何使用UART(STM32 HAL库)
  • 星巴克英语
  • 权重衰减与暂退法——paddle部分
  • golang获取当天最小的时间,以DateTime的string格式返回
  • 2025 - 中医学基础 - 考研 - 职称
  • Pandas库
  • Qt网络编程: 构建高效的HTTP文件下载器
  • Python 将Word, Excel, PDF和PPT文档转换为OFD格式
  • QD1-P21-P22 CSS 基础语法、注释、使用方法
  • 您是否也在寻找免费的 PDF 编辑器工具?10个备选PDF 编辑器工具
  • C++调试方法(Vscode)(一) ——本地调试
  • C语言 | Leetcode C语言题解之第460题LFU缓存
  • 【AI论文精读12】RAG论文综述2(微软亚研院 2409)P4-隐性事实查询L2
  • SpringBoot中间件Docker
  • 计算机毕设选题推荐【大数据专业】
  • Bootstrap 4 多媒体对象
  • Springmvc Thymeleaf 标签
  • 用java来编写web界面
  • 如何利用Fiddler进行抓包并自动化
  • 权重衰减与暂退法——pytorch与paddle实现模型正则化
  • MYSQL-windows安装配置两个或多个版本MYSQL
  • 6、Spring Boot 3.x集成RabbitMQ动态交换机、队列
  • 【分布式微服务云原生】 探索SOAP协议:简单对象访问协议的深度解析与实践