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

AI刷题-小R的随机播放顺序、不同整数的计数问题

目录

一、小R的随机播放顺序

问题描述

测试样例

解题思路: 

问题理解

数据结构选择

算法步骤

最终代码: 

运行结果: 

二、 不同整数的计数问题

问题描述

测试样例

解题思路: 

问题理解

数据结构选择

算法步骤

最终代码:

运行结果:​编辑 

 


一、小R的随机播放顺序

问题描述

小R有一个特殊的随机播放规则。他首先播放歌单中的第一首歌,播放后将其从歌单中移除。如果歌单中还有歌曲,则会将当前第一首歌移到最后一首。这个过程会一直重复,直到歌单中没有任何歌曲。

例如,给定歌单 [5, 3, 2, 1, 4],真实的播放顺序是 [5, 2, 4, 1, 3]

保证歌曲中的id两两不同。


测试样例

样例1:

输入:n = 5 ,a = [5, 3, 2, 1, 4]
输出:[5, 2, 4, 1, 3]

样例2:

输入:n = 4 ,a = [4, 1, 3, 2]
输出:[4, 3, 1, 2]

样例3:

输入:n = 6 ,a = [1, 2, 3, 4, 5, 6]
输出:[1, 3, 5, 2, 6, 4]

解题思路: 

问题理解

题目描述了一个特殊的随机播放规则:

  1. 首先播放歌单中的第一首歌,并将其从歌单中移除。
  2. 如果歌单中还有歌曲,则将当前第一首歌移到最后一首。
  3. 重复上述过程,直到歌单中没有任何歌曲。

数据结构选择

为了实现这个播放规则,我们可以使用一个队列(Queue)来模拟歌单。队列的特点是先进先出(FIFO),非常适合模拟歌曲的播放顺序。

算法步骤

  1. 初始化:将所有歌曲放入队列中。
  2. 播放歌曲
    • 从队列中取出第一首歌,并将其加入结果列表。
    • 如果队列中还有歌曲,将当前队列的第一首歌移到队列的末尾。
  3. 重复:重复上述步骤,直到队列为空。

 

最终代码: 

#include <iostream>
#include <vector>
#include <queue>  // 引入队列头文件std::vector<int> solution(int n, std::vector<int> a) {std::vector<int> result;  // 用于存储播放顺序std::queue<int> songQueue;  // 用于模拟歌单的队列// 将所有歌曲放入队列中for (int song : a) {songQueue.push(song);}// 模拟播放过程while (!songQueue.empty()) {// 取出队列中的第一首歌,并将其加入结果列表int currentSong = songQueue.front();songQueue.pop();result.push_back(currentSong);// 如果队列中还有歌曲,将当前队列的第一首歌移到队列的末尾if (!songQueue.empty()) {int nextSong = songQueue.front();songQueue.pop();songQueue.push(nextSong);}}return result;  // 返回最终的播放顺序
}int main() {std::vector<int> result1 = {5, 2, 4, 1, 3};std::vector<int> result2 = {4, 3, 1, 2};std::vector<int> result3 = {1, 3, 5, 2, 6, 4};std::cout << (solution(5, {5, 3, 2, 1, 4}) == result1) << std::endl;std::cout << (solution(4, {4, 1, 3, 2}) == result2) << std::endl;std::cout << (solution(6, {1, 2, 3, 4, 5, 6}) == result3) << std::endl;
}

运行结果: 

 

二、 不同整数的计数问题

问题描述

小R有一个字符串 word,该字符串由数字和小写英文字母组成。小R想用空格替换每一个不是数字的字符。然后,他希望统计在替换后剩下的整数中,不同整数的数目。

例如,给定字符串 "a123bc34d8ef34",替换后形成的字符串是 " 123 34 8 34",剩下的整数是 "123""34""8" 和 "34"。不同的整数有三个,即 "123""34" 和 "8"

注意,只有当两个整数的不含前导零的十进制表示不同,才认为它们是不同的整数。


测试样例

样例1:

输入:word = "a123bc34d8ef34"
输出:3

样例2:

输入:word = "t1234c23456"
输出:2

样例3:

输入:word = "a1b01c001d4"
输出:2

解题思路: 

好的,让我们来分析一下这个问题的解题思路。

问题理解

你需要处理一个由数字和小写英文字母组成的字符串,目标是统计替换后剩下的不同整数的数目。具体步骤如下:

  1. 字符串处理:遍历字符串,将非数字字符替换为空格。
  2. 提取整数:在遍历过程中,将连续的数字字符拼接成整数。
  3. 去除前导零:对于提取出的整数,去除前导零。
  4. 去重:使用集合(set)来存储不同的整数,确保每个整数只出现一次。
  5. 统计结果:最终集合的大小即为不同整数的数目。

数据结构选择

  • 集合(set:用于存储不同的整数,自动去重。
  • 字符串(string:用于临时存储拼接的数字。

算法步骤

  1. 初始化:创建一个集合用于存储不同的整数,创建一个字符串用于临时存储数字。
  2. 遍历字符串
    • 如果当前字符是数字,将其拼接到临时字符串中。
    • 如果当前字符不是数字,处理临时字符串中的数字:
      • 去除前导零。
      • 将处理后的数字加入集合。
      • 清空临时字符串。
  3. 处理最后一个数字:遍历结束后,如果临时字符串不为空,处理并加入集合。
  4. 返回结果:集合的大小即为不同整数的数目。

 

最终代码:

#include <iostream>
#include <string>
#include <set>
using namespace std;int solution(string word) {// PLEASE DO NOT MODIFY THE FUNCTION SIGNATURE// write code hereset<string> unidqueNumbers; //用集合存储不同的整数string currentNumber = ""; // 临时变量,用来拼接数字for (char ch : word) {if (isdigit(ch)) {currentNumber += ch;} else {// 如果遇到非数字字符,处理当前数字if (!currentNumber.empty()) {// 去除前导零并加入到 set 中while (currentNumber.size() > 1 && currentNumber[0] == '0') {// 表示从位置0开始删除一个字符currentNumber.erase(0, 1);}unidqueNumbers.insert(currentNumber);currentNumber = "";}} }// 遇到非数字才会处理数字,所以要处理字符串最后的数字if (!currentNumber.empty()) {// 去除前导零并加入到 set 中while (currentNumber.size() > 1 && currentNumber[0] == '0') {// 表示从位置0开始删除一个字符currentNumber.erase(0, 1);}unidqueNumbers.insert(currentNumber);}return unidqueNumbers.size();
}int main() {cout << (solution("a123bc34d8ef34") == 3) << endl;cout << (solution("t1234c23456") == 2) << endl;cout << (solution("a1b01c001d4") == 2) << endl;return 0;
}

运行结果: 

 

 

 

相关文章:

AI刷题-小R的随机播放顺序、不同整数的计数问题

目录 一、小R的随机播放顺序 问题描述 测试样例 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 最终代码&#xff1a; 运行结果&#xff1a; 二、 不同整数的计数问题 问题描述 测试样例 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 最终…...

windows 极速安装 Linux (Ubuntu)-- 无需虚拟机

1. 安装 WSL 和 Ubuntu 打开命令行&#xff0c;执行 WSL --install -d ubuntu若报错&#xff0c;则先执行 WSL --update2. 重启电脑 因安装了子系统&#xff0c;需重启电脑才生效 3. 配置 Ubuntu 的账号密码 打开 Ubuntu 的命令行 按提示&#xff0c;输入账号&#xff0c;密…...

【影刀_常规任务计划_API调用】

影刀_常规任务计划 1、在常规任务计划被关闭或者设置了定时任务的情况下&#xff08;非手动执行&#xff09;&#xff0c;通过API的方式启动任务&#xff0c;任务仍然可以被正常执行。 2、如果在常规任务计划里面应用中填写的参数的话&#xff0c; 如果通过api执行&#xff…...

参数校验 Spring Validation框架

后端参数校验 解决&#xff1a;校验前端传入的参数是否符合预期 1、引入依赖 使用Spring Validation框架 <!-- validation参数校验框架--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validatio…...

Spring Boot 基础入门指南

Spring Boot 基础入门指南 引言 在当今快速发展的软件行业中&#xff0c;开发者们一直在寻找简化应用程序开发的方法。Spring Boot 应运而生&#xff0c;它旨在帮助开发者快速构建基于Spring框架的应用程序&#xff0c;同时尽可能减少配置工作。本文将带您了解Spring Boot的基…...

doc、pdf转markdown

国外的一个网站可以&#xff1a; Convert A File Word, PDF, JPG Online 这个网站免费的&#xff0c;算是非常厚道了&#xff0c;但是大文件上传多了之后会扛不住 国内的一个网站也不错&#xff1a; TextIn-AI智能文档处理-图像处理技术-大模型加速器-在线免费体验 https://…...

基于 HTML5 Canvas 制作一个精美的 2048 小游戏--day 1

基于 HTML5 Canvas 制作一个精美的 2048 小游戏 在这个快节奏的生活中&#xff0c;简单而富有挑战性的游戏总能给我们带来乐趣。2048 是一款受欢迎的益智游戏&#xff0c;不仅考验智力&#xff0c;还能让人回味无穷。今天&#xff0c;我带领大家将一起学习如何使用 HTML5 Canv…...

知识图谱入门(一)

最近在研究Graph RAG项目&#xff0c;因此对相关内容做个总结&#xff0c;首先从知识图谱开始&#xff0c;供大家参考。 知识图谱是结构化知识表示的一种形式&#xff0c;它将知识组织成一个多关系图&#xff0c;其中节点表示实体&#xff0c;边表示实体之间的关 系。知识图谱…...

springboot项目-基础数据回显

一.基础数据回显说明 微服务项目中由于从服务独立的角度考虑&#xff0c;对数据库做了分库的处理。对于基础数据表来说&#xff0c;各个服务都是需要的。项目中在使用基础数据时&#xff0c;往往是在sql中写连接然后获取基础数据的名称。例&#xff1a; select wi.name,bc.ci…...

LabVIEW实现油浸式变压器自主监测与实时报告

油浸式变压器广泛应用于电力系统中&#xff0c;尤其是在电力传输和分配领域。为了确保变压器的安全、稳定运行&#xff0c;及时监测其工作状态至关重要。传统的变压器监测方法通常依赖人工巡检和定期检查&#xff0c;但这不能及时发现潜在的故障隐患&#xff0c;且效率较低。随…...

K8S 亲和性与反亲和性 深度好文

今天我们来实验 pod 亲和性。官网描述如下&#xff1a; 假设有如下三个节点的 K8S 集群&#xff1a; k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、镜像准备 1.1、镜像拉取 docker pull tomcat:8.5-jre8-alpine docker pull nginx…...

关于php语言api接口开发的流程

确定接口需求&#xff1a;首先明确接口的功能和需求&#xff0c;包括输入参数、输出结果以及接口的业务逻辑。 设计接口路由&#xff1a;根据接口需求&#xff0c;设计具体的接口路由&#xff0c;即URL路径&#xff0c;用于访问接口。 搭建PHP环境&#xff1a;确保你的服务器上…...

医疗集群系统中基于超融合数据库架构的应用与前景探析

一、引言 1.1 研究背景与意义 随着医疗信息化的飞速发展,医疗数据呈爆炸式增长。从日常诊疗记录、患者病历,到各类医疗影像、检查检验数据等,海量信息不断涌现。据统计,医疗数据的年增长率高达 30% 以上 ,2025 年,全球医疗数据量将达到 2314 艾字节(EB)。如此庞大的数…...

浅谈云计算15 | 存储可靠性技术(RAID)

存储可靠性技术 一、存储可靠性需求1.1 数据完整性1.2 数据可用性1.3 故障容错性 二、传统RAID技术剖析2.1 RAID 02.2 RAID 12.3 RAID 52.4 RAID 62.5 RAID 10 三、RAID 2.0技术3.1 RAID 2.0技术原理3.1.1 两层虚拟化管理模式3.1.2 数据分布与重构 3.2 RAID 2.0技术优势3.2.1 自…...

43.Textbox的数据绑定 C#例子 WPF例子

固定最简步骤&#xff0c;包括 XAML&#xff1a; 题头里引入命名空间 标题下面引入类 box和block绑定属性 C#&#xff1a; 通知的类&#xff0c;及对应固定的任务 引入字段 引入属性 属性双触发&#xff0c;其中一个更新block的属性 block>指向box的属性 从Textbo…...

LLM大语言模型的分类

从架构和功能的角度来看&#xff0c;LLM&#xff08;Large Language Model&#xff0c;大语言模型&#xff09;主要可以分为以下几种类型&#xff1a; **1. 基础语言模型&#xff1a;** * **定义:** 通过在大规模文本数据上进行预训练&#xff0c;学习语言的规律和模式&#…...

【北京迅为】iTOP-4412全能版使用手册-第八十七章 安装Android Studio

iTOP-4412全能版采用四核Cortex-A9&#xff0c;主频为1.4GHz-1.6GHz&#xff0c;配备S5M8767 电源管理&#xff0c;集成USB HUB,选用高品质板对板连接器稳定可靠&#xff0c;大厂生产&#xff0c;做工精良。接口一应俱全&#xff0c;开发更简单,搭载全网通4G、支持WIFI、蓝牙、…...

【深度学习】神经网络之Softmax

Softmax 函数是神经网络中常用的一种激活函数&#xff0c;尤其在分类问题中广泛应用。它将一个实数向量转换为概率分布&#xff0c;使得每个输出值都位于 [0, 1] 之间&#xff0c;并且所有输出值的和为 1。这样&#xff0c;Softmax 可以用来表示各类别的预测概率。 Softmax 函…...

容器渗透横向

本质上要获得 1.获得容器IP段 2.获得主机IP段 3.获得本机IP 4.通过CNI或Docker0等扫描本机端口 Flannel 容器信息 rootubuntu-linux-22-04-desktop:/home/parallels/Desktop# k get po -A -o wide NAMESPACE NAME …...

黑马Java面试教程_P1_导学与准备篇

系列博客目录 文章目录 系列博客目录导学Why?举例 准备篇企业是如何筛选简历的(筛选简历的规则)HR如何筛选简历部门负责人筛选简历 简历注意事项简历整体结构个人技能该如何描述项目该如何描述 应届生该如何找到合适的练手项目项目来源找到项目后&#xff0c;如何深入学习项目…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...