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

蓝桥杯算法题分享(二)

蓝桥杯算法题分享

本文将继续分享三道经典的蓝桥杯算法题,包括题目描述、解题思路和 Java 代码实现,帮助大家更好地理解算法的应用。对算法感兴趣的朋友可以点开我的主页查看我上周分享的另三道题。


第一题:次数差

题目描述

x 星球有 26 只球队,分别用 a ~ z 的 26 个字母代表。他们总是不停地比赛。

在某一赛段,哪个球队获胜了,就记录下代表它的字母,这样就形成一个长长的串。

国王总是询问:获胜次数最多的和获胜次数最少的有多大差距?(当然,他不关心那些一次也没获胜的,认为他们在怠工罢了)

解题思路

  1. 使用一个长度为 26 的数组 arr 记录每个字母的出现次数。
  2. 遍历输入字符串,统计各个字母的出现次数。
  3. 找出 arr 中非零的最大值和最小值。
  4. 计算二者之差并输出结果。

Java 代码实现

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);String str = scan.nextLine();int[] arr = new int[26];for (int i = 0; i < str.length(); i++) {    arr[str.charAt(i) - 'a']++;}scan.close();int max = 0, min = Integer.MAX_VALUE;for (int count : arr) {if (count > 0) {max = Math.max(max, count);min = Math.min(min, count);}}System.out.println(max - min);}
}

第二题:翻硬币

题目描述

小明正在玩一个"翻硬币"的游戏。

桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。

比如,可能情形是:**oo***oooo;

如果同时翻转左边的两个硬币,则变为:oooo***oooo

现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?

我们约定:把翻动相邻的两个硬币叫做一步操作。

解题思路

  1. 读取初始状态和目标状态。
  2. 遍历字符串,如果当前位置的字符与目标状态不同,则翻转当前位置和相邻位置的硬币。
  3. 统计翻转次数,直到初始状态变为目标状态。
  4. 输出最小翻转次数。

Java 代码实现

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);char[] arr1 = sc.next().toCharArray();char[] arr2 = sc.next().toCharArray();int sum = 0;for(int i = 0; i < arr1.length - 1; i++) {if(arr1[i] != arr2[i]) {arr1[i] = arr2[i];arr1[i + 1] = arr1[i + 1] == '*' ? 'o' : '*';sum++;}if(Arrays.equals(arr1, arr2)) {System.out.println(sum);break;}}}
}

第三题:特别数的和

题目描述

小明对数位中含有 2019 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。

请问,在 1 到 n(1 ≤ n ≤ 10⁴)中,所有这样的数的和是多少?

解题思路

  1. 遍历 1n 的所有数字。
  2. 逐位检查当前数字是否包含 2019
  3. 如果包含其中任意一个数字,则将该数字加入总和。
  4. 输出最终计算出的和。

Java 代码实现

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();long sum = 0;for (int i = 1; i <= n; i++) {if (containsSpecialDigit(i)) {sum += i;}}System.out.println(sum);sc.close();}private static boolean containsSpecialDigit(int n) {while (n != 0) {int digit = n % 10;if (digit == 2 || digit == 0 || digit == 1 || digit == 9) {return true;}n /= 10;}return false;}
}

总结

通过这三道题,我们可以看到不同类型的算法在解决问题时的实际应用。例如,第一题考察了基本的字符串处理与计数统计,第二题涉及模拟与贪心策略,而第三题则涉及遍历和数位分析。在蓝桥杯比赛中,熟练掌握各种算法技巧,并能够灵活运用,是取得好成绩的关键。希望本篇文章能够帮助大家加深理解,并在编程竞赛中不断提升自己的实力!祝愿大家在比赛中取得优异成绩!


原题链接

  • 次数差
  • 翻硬币
  • 特别数的和

欢迎大家在评论区留言讨论,分享你的解题思路和心得体会!

相关文章:

蓝桥杯算法题分享(二)

蓝桥杯算法题分享 本文将继续分享三道经典的蓝桥杯算法题&#xff0c;包括题目描述、解题思路和 Java 代码实现&#xff0c;帮助大家更好地理解算法的应用。对算法感兴趣的朋友可以点开我的主页查看我上周分享的另三道题。 第一题&#xff1a;次数差 题目描述 x 星球有 26 只…...

实战-MySQL5.7升级8.0遇到的四个问题

近期几个项目的MySQL由5.7升级到8.0&#xff0c;升级过程中遇到四个问题&#xff0c;记录下来分享一下&#xff1a; 第一个问题详见之前的文章&#xff1a; MySQL 5.7升级8.0报异常&#xff1a;处理新增关键字 第二个问题详见之前的文章&#xff1a; MySQL 5.7升级8.0报异常…...

为什么递归用栈?动态分配用堆?

文章目录 1. 区别2. 栈空间特点优点缺点 3. 堆空间特点优点缺点 4. 栈和堆的对比5. 总结 1. 区别 栈空间和堆空间是程序内存中的两块不同区域&#xff0c;分别用于不同的用途。 栈空间&#xff1a; 栈空间是由操作系统自动管理的内存区域&#xff0c;用于存储局部变量、函数…...

Java 中装饰者模式与策略模式在埋点系统中的应用

前言 在软件开发中&#xff0c;装饰者模式和策略模式是两种常用的设计模式&#xff0c;它们在特定的业务场景下能够发挥巨大的作用。本文将通过一个实际的埋点系统案例&#xff0c;探讨如何在 Java 中运用装饰者模式和策略模式&#xff0c;以及如何结合工厂方法模式来优化代码…...

计算机视觉总结

以下是针对上述问题的详细解答,并结合代码示例进行说明: 1. 改进YOLOv5人脸检测模块,复杂光照场景准确率从98.2%提升至99.5% 优化具体过程: 光照补偿:在数据预处理阶段,采用自适应光照补偿算法,对图像进行实时增强,以减少光照变化对人脸检测的影响。数据增强:在训练…...

无人设备遥控器之调度自动化技术篇

一、技术原理 信息采集与处理&#xff1a; 通过传感器、仪表等设备采集无人设备的各种数据&#xff0c;如位置、速度、状态等。 将采集到的数据传输到调度自动化系统中进行处理和分析&#xff0c;以获取设备的实时状态。 系统建模与优化&#xff1a; 调度自动化系统会根据…...

【AI】Orin Nano+ubuntu22.04上移植YoloV11,并使用DeepStream测试成功

【AI】郭老二博文之:AI学习目录汇总 1、准备工作 使用 sdk-manager 烧写 OrinNano, JetPack版本为6.0 DP,对应操作系统为:Ubuntu22.04 参见博客:【NVIDIA】Jetson Orin Nano系列:烧写Ubuntu22.04 2、安装 PyTorch 2.1 下载依赖 1)安装onnx pip install onnx -i h…...

K8S学习之基础四十五:k8s中部署elasticsearch

k8s中部署elasticsearch 安装并启动nfs服务yum install nfs-utils -y systemctl start nfs systemctl enable nfs.service mkdir /data/v1 -p echo /data/v1 *(rw,no_root_squash) >> /etc/exports exports -arv systemctl restart nfs创建运行nfs-provisioner需要的sa账…...

如何在 Windows 上安装并使用 Postman?

Postman 是一个功能强大的API测试工具&#xff0c;它可以帮助程序员更轻松地测试和调试 API。在本文中&#xff0c;我们将讨论如何在 Windows 上安装和使用 Postman。 Windows 如何安装和使用 Postman 教程&#xff1f;...

Langchain 提示词(Prompt)

基本用法 1. 基本概念 提示词模板 是一个字符串模板&#xff0c;其中包含一些占位符&#xff08;通常是 {variable} 形式的&#xff09;&#xff0c;这些占位符可以在运行时被实际值替换。LangChain 提供了多种类型的提示词模板&#xff0c;以适应不同的使用场景。 2. 主要类…...

什么是PHP伪协议

PHP伪协议是一种特殊的URL格式&#xff0c;允许开发者以不同于传统文件路径访问和操作资源。以下是一些常见的PHP伪协议及其详细介绍&#xff1a; 常见的PHP伪协议 1. **file://** - **用途**&#xff1a;访问本地文件系统。 - **示例**&#xff1a;file:///path/to/file.txt。…...

python脚本处理excel文件

1.对比perl和python 分别尝试用perl和python处理excel文件&#xff0c;发现perl的比较复杂&#xff0c;比如说read excel就有很多方式 Spreadsheet::Read use Spreadsheet::ParseExcel 不同的method&#xff0c;对应的取sheet的cell方式也不一样。更复杂的是处理含有中文内…...

【腾讯云架构师技术沙龙2025.03.22】

大模型技术演进与行业影响分析 日期&#xff1a;2025年3月22日 主讲人&#xff1a;李建忠 《DeepSeek实战驱动行业智变—AI应用寒武纪》 整理&#xff1a;飞书语音转化DeepSeek分析汇总 一、技术演进&#xff1a;从快思考到慢思考 1. 早期争议与能力局限&#xff08;2022-202…...

【SOC 芯片设计 DFT 学习专栏 -- IDDQ 测试 与 Burn-In 测试】

文章目录 IDDQ 测试与 Burn-In 测试IDDQ 测试工作原理测试过程优点局限性示例 2. Burn-In 测试工作原理测试过程优点局限性示例 总结对比 IDDQ 测试和 Burn-in 测试&#xff1a; IDDQ 测试与 Burn-In 测试 本文将详细介绍 DFT 中 IDDQ测试 和 burn-in测试模式 IDDQ 测试 IDD…...

Axure RP 9.0教程: 基于动态面板的元件跟随来实现【音量滑块】

文章目录 引言I 音量滑块的实现步骤添加底层边框添加覆盖层基于覆盖层创建动态面板添加滑块按钮设置滑块拖动效果引言 音量滑块在播放器类APP应用场景相对较广,例如调节视频的亮度、声音等等。 I 音量滑块的实现步骤 添加底层边框 在画布中添加一个矩形框:500 x 32,圆…...

JS—call,apply,bind:1分钟掌握三者的区别

个人博客&#xff1a;haichenyi.com。感谢关注 一. 目录 一–目录二–call三–apply四–bind五–三者对比 二. call 作用&#xff1a; 立即调用函数&#xff0c;显式指定this值&#xff0c;并逐个传递参数。 语法&#xff1a; func.call(thisArg, arg1, arg2, …) 特点&…...

Linux TTY设备汇总

目录 1. ‌tty(终端设备统称) 2. ‌ptm(伪终端主设备)与pts(伪终端从设备) 3. ‌ttys(串行端口终端) 4. ‌ttyACM(USB CDC ACM设备) 5. ‌ttyGS(USB Gadget Serial设备) 主要联系‌ ‌典型应用场景‌ TTY_CORE: drivers/tty/tty_io.c:tty_register_driver…...

WPF 与 C# 开发深度剖析

一、引言 在当今的软件开发领域&#xff0c;Windows 平台依旧占据着重要的地位。而 WPF&#xff08;Windows Presentation Foundation&#xff09;作为微软推出的一款强大的用户界面&#xff08;UI&#xff09;框架&#xff0c;为开发者提供了丰富的功能和灵活的设计方式&…...

好消息!软航文档控件(NTKO WebOffice)在Chrome 133版本上提示扩展已停用的解决方案

软航文档控件现有版本依赖Manifest V2扩展技术支持才能正常运行&#xff0c;然而这个扩展技术到2025年6月在Chrome高版本上就彻底不支持了&#xff0c;现在Chrome 133开始的版本已经开始弹出警告&#xff0c;必须手工开启扩展支持才能正常运行。那么如何解决这个技术难题呢&…...

通过仿真确定抗积分饱和策略的最佳系数

通过仿真确定抗积分饱和策略的最佳系数&#xff08;如PID参数 ( K_p, K_i, K_d ) 以及抗饱和参数 ( K_{\text{back}} )、积分限幅值等&#xff09;是一个系统化的过程。以下是具体步骤和示例&#xff1a; — 1. 建立仿真模型 1.1 模型组成 被控对象&#xff1a;例如电机、温…...

消息队列(Kafka及RocketMQ等对比联系)

目录 消息队列 一、为什么使用消息队列&#xff1f;消息队列有什么优点/缺点&#xff1f;介绍下Kafka、ActiveMQ、RabbitMQ、RocketMQ有什么优点缺点&#xff0c;如何取舍&#xff1f; 1.公司业务场景是什么&#xff0c;这个业务场景有什么挑战&#xff0c;如果不用MQ有什么麻…...

GitHub开源的容器管理面板-Dpanel

dpanel Docker安装部署二进制部署 GitHub官网 一块轻量化docker可视化管理面板&#xff0c;由国人开发&#xff0c;个人觉得是比较好用的&#xff0c;功能都很齐全&#xff0c;并且可以通过修改源码&#xff0c;自定义前端样式等。 Docker安装部署 官网 部署环境&#xff1…...

【HarmonyOS Next】三天撸一个BLE调试精灵

【HarmonyOS Next】三天撸一个BLE调试精灵 一、功能介绍 BLE调试精灵APP属于工具类APP&#xff0c;在用户使用的过程中&#xff0c;负责调试BLE设备从机端&#xff0c;比如蓝牙耳机、低功耗设备、带有BLE的空调等设备&#xff0c;可以在页面中清晰看到设备的厂商&#xff0c;…...

java 批量下载doc\excle\pdf

指定图片集合 下载到指定文件夹 import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.Arrays; import java.util.List;public class OfficeFileDownloader {/*** 需要下载的Office文档URL列表*/private static final List<Strin…...

软件性能效率测试工具有哪些?专业第三方软件检测机构推荐

在软件开发的新时代&#xff0c;软件性能效率测试已经成为每个企业不可或缺的一部分。无论是在竞争激烈的市场中&#xff0c;还是在追求卓越用户体验的过程中&#xff0c;都需要进行有效的性能测试。 一、软件性能效率测试的目标   1、响应时间&#xff1a;确保用户请求的响…...

使用flask_restful快速构建接口

Flask-RESTful 是一个用于快速构建 RESTful API 的 Flask 扩展。它简化了创建、管理和文档化 REST API 的过程。利用 Flask-RESTful&#xff0c;你可以更容易地将你的 Flask 应用程序组织成 RESTful 原则的风格 安装包 pip install flask_restful 快速构建接口 from flask im…...

centos 7 部署FTP 服务用shell 搭建脚本,使用时稍微修改自己所需需求

#!/bin/bash # 检查是否为 root 用户 if [ "$(id -u)" ! "0" ]; then echo "此脚本需要以 root 用户身份运行。" exit 1 fi # 安装 vsftpd yum install vsftpd -y # 备份原始配置文件 cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd…...

Hadoop集群搭建(hdfs、yarn)

Hadoop 是 Apache 软件基金会旗下的一个开源项目&#xff0c;是用于处理大数据的分布式系统基础架构&#xff0c;被广泛应用于大数据存储、处理和分析等场景。 一、核心组件 1、Hadoop 分布式文件系统&#xff08;HDFS&#xff09; 具有高容错性&#xff0c;能在低成本硬件上…...

PyArrow 和 Parquet 的组合通过内存优化和高效存储,显著提升大数据处理的性能

PyArrow 和 Apache Parquet 是处理大规模数据的高效工具组合&#xff0c;它们结合了内存优化和列式存储的优势&#xff0c;适用于多种大数据场景。以下是对两者的详细解析及其协同工作的方式&#xff1a; ### 1. **PyArrow 的核心作用** - **Apache Arrow 实现**&#xff1…...

Oracle数据库服务器地址变更与监听配置修改完整指南

一、前言 在企业IT运维中&#xff0c;Oracle数据库服务器地址变更是常见的运维操作。本文将详细介绍如何安全、高效地完成Oracle数据库服务器地址变更及相关的监听配置修改工作&#xff0c;确保数据库服务在迁移后能够正常运行。 二、准备工作 1. 环境检查 确认新旧服务器I…...