華為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.pswp.cn/web/37419.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37419.shtml
英文地址,請注明出處:http://en.pswp.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語句暫停執…