华为OD机考题HJ24 合唱队

前言

应广大同学要求,开始以OD机考题作为练习题,看看算法和数据结构掌握情况。有需要练习的可以关注下。

描述

N 位同学站成一排,音乐老师要请最少的同学出列,使得剩下的 K 位同学排成合唱队形。

设𝐾K位同学从左到右依次编号为 1,2…,K ,他们的身高分别为𝑇1,𝑇2,…,𝑇𝐾T1​,T2​,…,TK​ ,若存在𝑖(1≤𝑖≤𝐾)i(1≤i≤K) 使得𝑇1<𝑇2<......<𝑇𝑖−1<𝑇𝑖T1​<T2​<......<Ti−1​<Ti​ 且 𝑇𝑖>𝑇𝑖+1>......>𝑇𝐾Ti​>Ti+1​>......>TK​,则称这𝐾K名同学排成了合唱队形。

通俗来说,能找到一个同学,他的两边的同学身高都依次严格降低的队形就是合唱队形。

例子:

123 124 125 123 121 是一个合唱队形

123 123 124 122不是合唱队形,因为前两名同学身高相等,不符合要求

123 122 121 122不是合唱队形,因为找不到一个同学,他的两侧同学身高递减。

你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。

注意:不允许改变队列元素的先后顺序  不要求最高同学左右人数必须相等

数据范围: 1≤𝑛≤3000 1≤n≤3000 

输入描述:

用例两行数据,第一行是同学的总数 N ,第二行是 N 位同学的身高,以空格隔开

输出描述:

最少需要几位同学出列

输入:

8
186 186 150 200 160 130 197 200
输出:
4
说明:由于不允许改变队列元素的先后顺序,所以最终剩下的队列应该为186 200 160 130或150 200 160 130 

实现原理

1.使用动态规划从左到右计算当前元素的左子序列最大长度。

2.使用动态规划从左到右计算当前元素的右子序列最大长度。

3.所有位置的左子序列和右子序列求和,比较最大的值。

实现代码

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息import java.util.Scanner;public class Main {public static void main(String[] args) {// 输入Scanner sc = new Scanner(System.in);while (sc.hasNext()) {int n = sc.nextInt();int[] arr = new int[n];for (int i = 0; i < n; i++) {arr[i] = sc.nextInt();}//计算最长递增序列int[] dp_left=new int[n];for(int i=0;i<n;i++){dp_left[i]=1;for(int j=0;j<i;j++){if(arr[i]>arr[j]){dp_left[i]=Math.max(dp_left[i],dp_left[j]+1);}           }}//计算最长递减序列int[] dp_right=new int[n];for(int i=n-1;i>=0;i--){dp_right[i]=1;for(int j=n-1;j>i;j--){if(arr[i]>arr[j]){dp_right[i]=Math.max(dp_right[i],dp_right[j]+1);}}}int res=0;for(int i=0;i<n;i++){res=Math.max(res,dp_left[i]+dp_right[i]-1);}System.out.println(n-res);                 }}}

QA1:

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

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

相关文章

科普文:八大排序算法(JAVA实现)+ 自制动画 (袁厨的算法小屋)

我将我仓库里的排序算法给大家汇总整理了一下&#xff0c;写的非常非常细&#xff0c;还对每个算法制作了动画&#xff0c;一定能够对大家有所帮助&#xff0c;欢迎大家阅读。另外我也对 leetcode 上面可以用排序算法秒杀的算法题进行了总结&#xff0c;会在后面的文章中进行发…

物联网协议都包含哪些协议?

物联网协议是物联网生态系统中不可或缺的组成部分&#xff0c;它们负责处理和协调物联网设备之间的通信。具体介绍如下&#xff1a; Ethernet&#xff1a;以太网是一种有线网络协议&#xff0c;广泛应用于局域网络(LAN)中&#xff0c;提供稳定的高速数据传输。Wi-Fi&#xff1…

Python自动化运维 系统基础信息模块

1.系统信息的收集 系统信息的收集&#xff0c;对于服务质量的把控&#xff0c;服务的监控等来说是非常重要的组成部分&#xff0c;甚至是核心的基础支撑部分。我们可以通过大量的核心指标数据&#xff0c;结合对应的检测体系&#xff0c;快速的发现异常现象的苗头&#xff0c;进…

springboot项目如何整合rocketmq

1、项目导入rocketmq依赖 添加 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-stream-rocketmq</artifactId> </dependency> 完整内容如下: <?xml version="1.0" encoding="…

Golang | Leetcode Golang题解之第208题实现Trie前缀树

题目&#xff1a; 题解&#xff1a; type Trie struct {children [26]*TrieisEnd bool }func Constructor() Trie {return Trie{} }func (t *Trie) Insert(word string) {node : tfor _, ch : range word {ch - aif node.children[ch] nil {node.children[ch] &Trie{…

mac|tableau public 仪表盘使用

对华东地区的利润进行仪表盘可视化 选择下面的功能表的新建仪表盘,把上面的表1表2放入其中 通过下图操作将两个表联合起来&#xff0c;即上图使用筛选器时下面的表随之改变 将上图设置为筛选器&#xff0c;可以通过点击地区查看数据

MySQL之MHA高可用集群及故障切换

一、MHA概述 MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的mysql高可用环境下故障切换和主从复制的软件。MHA的出现就是为了解决mysql单点故障。Mysql故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障性切换操作。MHA能在故障切换的过程中最大程度…

特征工程的力量

为什么你应该使用逻辑回归来建模非线性决策边界&#xff08;使用 Python 代码&#xff09; 作为一名大数据从业者&#xff0c;复杂的机器学习技术非常具有吸引力。使用一些深度神经网络 (DNN) 获得额外的 1% 准确率&#xff0c;并在此过程中启动 GPU 实例&#xff0c;这让人非常…

【使用webrtc-streamer解析rtsp视频流】

webrtc-streamer WebRTC (Web Real-Time Communications) 是一项实时通讯技术&#xff0c;它允许网络应用或者站点&#xff0c;在不借助中间媒介的情况下&#xff0c;建立浏览器之间点对点&#xff08;Peer-to-Peer&#xff09;的连接&#xff0c;实现视频流和&#xff08;或&a…

了解 ZooKeeper:关键概念和架构

ZooKeeper 是一种分布式协调服务&#xff0c;广泛用于分布式系统中&#xff0c;用于维护配置信息、命名、同步和组服务。它最初由雅虎开发&#xff0c;现在是一个 Apache 项目&#xff0c;已成为许多大型分布式应用程序不可或缺的一部分。本文深入探讨 ZooKeeper 的关键概念和架…

【Android】Activity子类之间的区别

从底层往顶层的继承顺序依次是&#xff1a; Activity&#xff0c;最原始的Activity androidx.core.app.ComponentActivity&#xff0c;仅仅优化了一个关于KeyEvent的拦截问题&#xff0c;一般不继承这个类 androidx.activity.ComponentActivity&#xff0c;支持和Android Arc…

Spark Join优化案例:Join Key 远大于 Payload

在一个案例中&#xff0c;大表 100GB、小表 10GB&#xff0c;它们全都远超广播变量阈值&#xff08;默认 10MB&#xff09;。因为小表的尺寸已经超过 8GB&#xff0c;在大于 8GB 的数据集上创建广播变量&#xff0c;Spark 会直接抛出异常&#xff0c;中断任务执行&#xff0c;所…

C语言 求 n 个数的阶乘之和

求n个数的阶乘之和&#xff08;即求1&#xff01;2&#xff01;3&#xff01;…n!&#xff09; 这个程序读取用户输入的正整数 n&#xff0c;计算并输出 1! 2! 3! ... n! 的值。 #include <stdio.h>// 计算阶乘的函数 long factorial(int num) {long result 1;for…

恢复 IntelliJ IDEA 中消失的菜单栏

要恢复 IntelliJ IDEA 中消失的菜单栏&#xff0c;可以按照以下简单步骤操作&#xff1a; 使用快捷键打开搜索&#xff1a;首先&#xff0c;双击 Shift 键打开全局搜索对话框。 搜索“Menu”&#xff1a;在搜索框中输入 menu&#xff0c;然后从搜索结果中选择与“Main Menu”相…

python-基础篇-选择-是什么

文章目录 定义一&#xff1a;Python 条件语句跟其他语言基本一致的&#xff0c;都是通过一条或多条语句的执行结果&#xff08; True 或者 False &#xff09;来决定执行的代码块。1、什么是条件语句2、if 语句的基本形式3、if 语句多个判断条件的形式4、if 语句多个条件同时判…

次序统计量

内容来源 概率论与数理统计教程&#xff08;第三版&#xff09; 茆诗松 高等教育出版社 数理统计学导论&#xff08;原书第7版&#xff09; 机械工业出版社 定义 设 X 1 , X 2 , ⋯ , X n X_1,X_2,\cdots,X_n X1​,X2​,⋯,Xn​ 是来自连续分布的随机样本 此分布具有 p d f…

【机器学习】Python reversed 函数

目录&#xff1a; reversed()函数初探应用于列表和元组实战演练&#xff1a;山海经故事文本处理 Python中的内置函数——reversed()。 这个函数能够帮助你高效地处理序列类型数据&#xff0c;比如列表、元组、字符串等&#xff0c;通过它你可以轻松地反转这些序列中的元素顺…

JSON 简述与应用

1. JSON 简述 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;常用于客户端与服务器之间的数据传递。它基于JavaScript对象表示法&#xff0c;但独立于语言&#xff0c;可以被多种编程语言解析和生成。 1.1 特点 轻量级&#…

JS对数据类型的检测方式

1. typeof()对于基本数据类型没问题&#xff0c;遇到引用数据类型就不管用 console.log( typeof 666 ); // number console.log( typeof [1,2,3] ); // object 2. instanceof()只能判断引用数据类型&#xff0c;不能判断基本数据类型 console.log( [] instanceof Array ) // tr…

Unity--协程--Coroutine

Unity–协程–Coroutine 1. 协程的基本概念 基本概念:不是线程,将代码按照划分的时间来执行,这个时间可以是具体的多少秒,也可以是物理帧的时间,也可以是一帧的绘制结束的时间。 协程的写法&#xff1a;通过返回IEnumerator的函数实现&#xff0c;使用yield return语句暂停执…