华为OD机试真题B卷 Java 实现【最少交换次数】,附详细解题思路

news2024/11/16 0:02:42

一、题目描述

给出数字K,请输出所有小于K的整数组合到一起的最小交换次数。

组合一起是指满足条件的数字相邻,不要求相邻后在数组中的位置。

取值范围:

-100 <= K <= 100

-100 <= 数组中的数值 <= 100

二、输入描述

第一行输入数组:1 3 1 4 0

第二行输入K数值:2

三、输出描述

第一行输出的最少交换次数:1

四、解题思路

利用滑动窗口的思想,窗口大小为所有小于K的整数,然后窗口中大于K的整数是需要替换的次数。

五、解题思路

  1. 读取输入的整数数组和目标数值K;
  2. 统计数组中小于K的整数个数,记为count;
  3. 如果count为1,表示只有一个小于K的整数,不需要交换,直接输出0;
  4. 初始化最小交换次数minSwapCount为0;
  5. 遍历数组前count个元素,如果元素大于等于K,将minSwapCount加1;
  6. 将minSwapCount赋值给临时变量temp;
  7. 从第count个元素开始遍历数组,记当前元素为nums[j],前一个元素为nums[l],后一个元素为nums[r],其中l = j - count,r = j;
  8. 如果nums[l]大于等于K且nums[r]小于K,表示交换nums[l]和nums[r]可以减少一次交换次数,将temp减1;
  9. 如果nums[l]小于K且nums[r]大于等于K,表示交换nums[l]和nums[r]可以增加一次交换次数,将temp加1;
  10. 更新最小交换次数minSwapCount为min(minSwapCount, temp),保留较小的值;
  11. 输出最小交换次数minSwapCount;

六、Java算法源码

/**
 * 给出数字K,请输出所有小于K的整数组合到一起的最小交换次数。
 */
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int[] nums = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
    int k = sc.nextInt();

    int count = 0;
    for (int i = 0; i < nums.length; i++) {
        if (nums[i] < k) {
            count++;
        }
    }

    // 如果只有一个,则不需要交换
    if (count == 1) {
        System.out.println(0);
        return;
    }

    // 最小交换次数
    int minSwapCount = 0;
    for (int i = 0; i < count; i++) {
        if (nums[i] >= k) {
            minSwapCount++;
        }
    }
    int temp = minSwapCount;
    for (int j = count; j < nums.length; j++) {
        int l = j - count;
        int r = j;
        if (nums[l] >= k && nums[r] < k) {
            temp--;
        } else if (nums[l] < k && nums[r] >= k) {
            temp++;
        }
        // 最小交换次数
        minSwapCount = Math.min(minSwapCount, temp);
    }
    System.out.println(minSwapCount);
}

七、效果展示

1、输入

1 3 1 4 0
2

2、输出

1

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【不爱施肥的小布】【2023Q2 100分】

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/594152.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全合规-ISO 27001(一)

实施ISO27001认证的步骤 在长期实践过程中&#xff0c;总结创新了一套高效可行的ISO27001/ISMS项目实施的规范流程。 一、现状调研分析&#xff1a;我方派咨询师去企业了解基本情况&#xff1b;本阶段主要是前期的准备和计划工作&#xff0c;包括明确评估目标&#xff0c;确定…

如何远程控制电脑,远程控制电脑的设置方法

很多人无论是在工作还是生活中使用电脑的时候都需要用到远程控制&#xff0c;因为它可以方便我们解决很多需要到现场操作的问题&#xff0c;在很大方面提升了我们的工作效率&#xff0c;下面来跟大家分享一下&#xff0c;如何远程控制电脑&#xff0c;远程控制电脑的设置方法 …

Web应用技术(第十五周/持续更新)

本次练习基于how2j和课本&#xff0c;进行SSM的初步整合&#xff0c;理解SSM整合的原理、好处。 SSM整合应用 1.简单的实例项目&#xff1a;2.原理分析&#xff1a;3.浅谈使用SSM框架化&#xff1a; 1.简单的实例项目&#xff1a; how2j 2.原理分析&#xff1a; 具体见流程图…

【网络】基础知识1

目录 网络发展 独立模式 网络互联 局域网LAN 广域网WAN 什么是协议 初识网络协议 协议分层 OSI七层模型 TCP/IP四层&#xff08;或五层&#xff09;模型 OSI和TCP/IP对比 网络传输流程 什么是报头 局域网通信原理 同网段的主机通讯 跨网段的主机通讯 数据包封装…

Kali搭建GVM完整版-渗透测试模拟环境(7)

上一篇:OpenVAS、GSA配置验证-渗透测试模拟环境(6)_luozhonghua2000的博客-CSDN博客 在bt5上面进行了安装,调试等配置验证,这篇在kali上面继续安装调试卸载等配置验证,中途版本问题,依赖问题,脚本编写都一一解决。 特别是因网络原因造成的rsync: [Receiver] safe_read f…

Sinkhorn-Knopp算法

Sinkhorn-Knopp是为了解决最优传输问题所提出的。 Sinkhorn算法原理 最优运输问题的目标就是以最小的成本将一个概率分布转换为另一个概率分布。即将概率分布 c 以最小的成本转换到概率分布 r&#xff0c;此时就要获得一个分配方案 P ∈ R n m 其中需满足以下条件&#xff1…

数据分析应该怎么学习?适合什么人学?

先来分享下适合学习数据分析的人群&#xff1a; 数据爱好者&#xff1a;对数据比较感兴趣&#xff0c;喜欢从数据中发现问题&#xff0c;有一定的见解&#xff0c;那么数据分析可以让这类小伙伴能够更好的理解和解释数据。市场营销、运营、业务分析&#xff1a;这类小伙伴学习…

SAP从入门到放弃系列之MRP区域

注&#xff1a;MRP AREA&#xff0c;本文中MRP范围或MRP区域都是指MRP AREA。另外MRP组和MRP区域是两个概念。 目录 MRP区域-库位层级 MRP区域-分包 其他事项 MRP区域-库位层级 除了在单个工厂级别、物料级别或产品组级别运行 MRP 之外&#xff0c;如果业务需要为以下运行 …

NLPChatGPTLLMs技术、源码、案例实战210课

NLP&ChatGPT&LLMs技术、源码、案例实战210课 超过12.5万行NLP/ChatGPT/LLMs代码的AI课程 讲师介绍 现任职于硅谷一家对话机器人CTO&#xff0c;专精于Conversational AI 在美国曾先后工作于硅谷最顶级的机器学习和人工智能实验室 CTO、杰出AI工程师、首席机器学习工程…

【机器学习】浅析过拟合

过度拟合 我们来想象如下一个场景&#xff1a;我们准备了10000张西瓜的照片让算法训练识别西瓜图像&#xff0c;但是这 10000张西瓜的图片都是有瓜梗的&#xff0c;算法在拟合西瓜的特征的时候&#xff0c;将西瓜带瓜梗当作了一个一般性的特征。此时出现一张没有瓜梗的西瓜照片…

探索Java面向对象编程的奇妙世界(七)

⭐ 字符串 String 类详解⭐ 阅读 API 文档⭐ String 类常用的方法⭐ 字符串相等的判断⭐ 内部类 ⭐ 字符串 String 类详解 String 是最常用的类&#xff0c;要掌握 String 类常见的方法&#xff0c;它底层实现也需要掌握好&#xff0c;不然在工作开发中很容易犯错。 &#x…

UI设计师必备的远程软件有哪些?

远程工作时&#xff0c;选择高效的远程软件非常重要。以下是3款提高工作效率的远程软件&#xff0c;希望对你有所帮助&#xff01; 1、即时设计协同设计 是国内首款集合原型、设计、交付、协作和资源管理于一体的高效远程设计软件。它提供实时在线协作功能&#xff0c;使用户…

14肖特基二极管

目录 一、介绍 二、结构 三、关键参数 1、导通压降VF 2、反向饱和漏电流IR 3、额定电流Io/IF 4、最大浪涌电流IFSM 5、最大反向峰值电压VRM 6、最大直流反向电压VR 7、最高工作频率fM 8、反向恢复时间Trr 9、最大耗散功率P 四、特点 1、反向恢复时间 2、缺点 五…

vue router 拆分路由 自动导入

目录 目录结构&#xff1a;拆分路由&#xff1a;自动导入&#xff1a;配置路由&#xff1a; 不求甚解&#xff0c;直接照搬就行了。 目录结构&#xff1a; 拆分路由&#xff1a; // danweiRouter.js export default {path: /danwei,name: danwei,component: () > import(.…

详解RGB和YUV色彩空间转换

前言 首先指出本文中的RGB指的是非线性RGB&#xff0c;意思就是经过了伽马校正&#xff0c;按照行业规矩应当写成RGB&#xff0c;但是为了书写方便&#xff0c;仍写成RGB。关于YUV有多种叫法&#xff0c;分别是YUV&#xff0c;YPbPr&#xff0c;YCbCr。因此本文将首先指出他们之…

这 13 种职业用AI提效的 40 类场景盘点

随着人工智能技术的发展&#xff0c;职业领域出现了诸如我们“小蜜蜂助手Beezy”等神奇的工具&#xff0c;大幅度提升了各行各业里从业人员的工作效率。 笔者今天将详述13种常见职业&#xff0c;分别是如何利用这些工具在实际工作过程中来帮助自己提升效率的。大量干货和私藏宝…

2419286-92-1,Sulfo-Cy5.5 NHS ester,磺酸基Cyanine5.5-活性酯,用于标记抗体

Sulfo-Cyanine5.5 NHS ester&#xff0c;sulfo Cy5.5(Et) NHS&#xff0c;sulfo Cy5.5 SE&#xff0c;磺酸基Cy5.5-活性酯 &#xff08;文章资料汇总来源于&#xff1a;陕西新研博美生物科技有限公司小编MISSwu&#xff09;​ 产品结构式&#xff1a; 产品规格&#xff1a; 1…

Maven高级2-聚合与继承

1. 聚合 注意打包方式&#xff0c;不是默认的jar包形式&#xff0c;也不是web的war包形式&#xff0c;而是pom形式&#xff1b; <groupId>org.example</groupId> <artifactId>springmvc_08_parent</artifactId> <version>1.0-SNAPSHOT</versi…

探索 Web 管理之路,OpenYurt 社区 UI/CLI SIG 正式启动

作者&#xff1a;陈璐、邓梁 背景 OpenYurt 是业界首个依托云原生技术体系、“零”侵入实现的智能边缘计算平台。它具有“云、边、端一体化”的全方位能力,可以帮助用户快速实现大规模边缘计算业务和异构算力的高效交付、运维及管理。 在前几个迭代的大版本中&#xff0c;Op…

探访世优科技数字人虚拟直播产品体系 | 世优开放日再次成功举行

2023年5月30日&#xff0c;世优科技全栈技术产品体验活动&#xff08;第二期&#xff09;顺利落下帷幕。此次活动共邀请到30余位各行各业的嘉宾到场&#xff0c;在两个多小时的开放日活动中&#xff0c;世优科技全面展示数字人及虚拟直播领域的技术产品体系。来访嘉宾们全程体验…