華為OD機試 - 剩余銀飾的重量(Java 2024 C卷 100分)

在這里插入圖片描述

華為OD機試 2024C卷題庫瘋狂收錄中,刷題點這里

專欄導讀

本專欄收錄于《華為OD機試(JAVA)真題(A卷+B卷+C卷)》。

刷的越多,抽中的概率越大,每一題都有詳細的答題思路、詳細的代碼注釋、樣例測試,發現新題目,隨時更新,全天CSDN在線答疑。

一、題目描述

有N塊二手市場收集的銀飾,每塊銀飾的重量都是正整數,收集到的銀飾會被熔化用于打造新的飾品。

每一回合,從中選出三塊 最重的 銀飾,然后一起熔掉。

假設銀飾的重量分別為 x 、y和z,且 x <= y <= z。那么熔掉的可能結果如下:

  • 如果 x == y == z,那么三塊銀飾都會被完全熔掉;
  • 如果 x == y 且 y != z,會剩余重量為 z - y 的銀塊無法被熔掉;
  • 如果 x != y 且 y == z,會剩余重量為 y - x 的銀塊無法被熔掉;
  • 如果 x != y 且 y != z,會剩余重量為 z - y 與 y - x 差值 的銀塊無法被熔掉。
  • 最后,如果剩余兩塊,返回較大的重量(若兩塊重量相同,返回任意一塊皆可);
  • 如果只剩下一塊,返回該塊的重量;如果沒有剩下,就返回 0。

二、輸入描述

輸入數據為兩行

第一行為銀飾數組長度 n,1 ≤ n ≤ 40,

第二行為n塊銀飾的重量,重量的取值范圍為[1,2000],重量之間使用空格隔開

三、輸出描述

如果剩余兩塊,返回較大的重量(若兩塊重量相同,返回任意一塊皆可);

如果只剩下一塊,返回該塊的重量;如果沒有剩下,就返回 0。

輸入:

3
1 1 1

輸出:

0

說明:

選出1 1 1,得到 0,最終數組轉換為 [],最后沒有剩下銀塊,返回0

四、解題思路

該問題要求處理一組銀飾的重量,通過特定的熔化規則不斷減少銀飾數量,直到剩余少于三塊銀飾。具體熔化規則根據最重的三塊銀飾的重量差異來決定是否生成新的剩余銀塊。解決這個問題的一個簡單方法是使用排序和模擬的方式。

這個問題的核心思路是:

  1. 對所有銀飾重量進行排序。
  2. 每次選擇最重的三塊銀飾,按規則進行熔化。
  3. 更新剩余銀飾的數組,如果有新的剩余銀塊產生,將其加入數組。
  4. 重復上述過程,直到剩余銀飾不足三塊。
  5. 根據最后剩余的銀飾數量,返回對應的結果。

五、Java算法源碼

public class OdTest01 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();List<Integer> weights = new ArrayList<>();for (int i = 0; i < n; i++) {weights.add(scanner.nextInt());}System.out.println(meltSilverware(weights));}private static int meltSilverware(List<Integer> weights) {// 當銀飾數少于3塊時,處理剩余情況while (weights.size() >= 3) {Collections.sort(weights, Collections.reverseOrder()); // 降序排序int z = weights.get(0);int y = weights.get(1);int x = weights.get(2);// 移除最重的三塊銀飾weights.remove(0);weights.remove(0);weights.remove(0);// 根據規則計算剩余銀飾if (x == y && y == z) {// 全部熔掉,不剩余} else if (x == y && y != z) {// 剩余 z - yweights.add(z - y);} else if (x != y && y == z) {// 剩余 y - xweights.add(y - x);} else if (x != y && y != z) {// 剩余 z - y 與 y - xint newWeight = Math.abs((z - y) - (y - x));if (newWeight > 0) {weights.add(newWeight);}}}// 處理剩余的銀飾情況if (weights.size() == 2) {return Math.max(weights.get(0), weights.get(1));} else if (weights.size() == 1) {return weights.get(0);} else {return 0;}}
}

六、效果展示

1、輸入

3
3 7 10

2、輸出

1

3、說明

選出 3 7 10,需要計算 (7-3) 和 (10-7) 的差值,即(7-3)-(10-7)=1,所以數組轉換為 [1],剩余一塊,返回該塊重量,返回1

在這里插入圖片描述


🏆下一篇:華為OD機試 - 簡易內存池 - 邏輯分析(Java 2024 C卷 200分)

🏆本文收錄于,華為OD機試(JAVA)真題(A卷+B卷+C卷)

刷的越多,抽中的概率越大,每一題都有詳細的答題思路、詳細的代碼注釋、樣例測試,發現新題目,隨時更新,全天CSDN在線答疑。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/14149.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14149.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/14149.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Python】 如何對對象列表進行排序,有點意思

在Python中&#xff0c;我們經常需要對對象列表進行排序&#xff0c;這可以通過多種方式實現。當對象是一個自定義類實例時&#xff0c;排序通常基于對象的一個或多個屬性。Python提供了內置的sorted()函數和列表的sort()方法&#xff0c;它們都允許我們指定一個排序的關鍵字。…

iPhone徹底刪除的照片怎么恢復?專業技巧助您解憂

在使用iPhone的過程中&#xff0c;我們可能會因為誤操作或其他原因將一些重要的照片徹底刪除。然而&#xff0c;即使照片被徹底刪除&#xff0c;也并不意味著它們就永遠消失了&#xff0c;它們只是被打上了“可覆蓋的空間”的標簽。 在照片被新數據覆蓋之前&#xff0c;我們仍…

C語言學習【C控制語句:循環】

C語言學習【C控制語句&#xff1a;循環】 while循環 /* 根據用戶鍵入的整數求和 */#include "stdio.h"int main(void) {long num;long sum 0L; /* 把sum初始化為0 */int status;printf("Please enter an integer to be summed");printf(&quo…

基于微信小程序的校園捐贈系統的設計與實現

校園捐贈系統是一種便捷的平臺&#xff0c;為校園內的各種慈善活動提供支持和便利。通過該系統&#xff0c;學生、教職員工和校友可以方便地進行捐贈&#xff0c;并了解到相關的項目信息和捐助情況。本文將介紹一個基于Java后端和MySQL數據庫的校園捐贈系統的設計與實現。 技術…

Java日期Date和LocalDateTime的工具類

Date package com.qiangesoft.utils.date;import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;/*** 日期工具類** author lq* date 2024-05-23*/ public class DateUtil {public static final String[] CHINESE_WEEK_DAY new String[]{&q…

Excel 公式積累

1.獲取當前位置的左側單元格 引用當前單元格左側的第一個單元格&#xff1a;OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1) ROW()返回當前單元格的行號&#xff0c;COLUMN()返回當前單元格的列號。 ADDRESS函數可以根據指定行號和列號獲得工作表中的某個單元格的地址。例如…

go全部版本下載目錄

linux安裝教程&#xff1a; Download and install - The Go Programming Language rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.3.linux-amd64.tar.gzexport PATH$PATH:/usr/local/go/bin go version 全部版本下載目錄&#xff1a; All releases - Th…

鴻蒙本機通信

demo地址 https://github.com/MartinLi89/WanHarmony 目前只學到一部分&#xff0c;不正確的地方&#xff0c;還望大家指正&#xff0c;我會及時更新&#xff0c;謝謝&#xff0c;歡迎評論留言 線程內通信&#xff0c;線程間通信&#xff0c;進程間通信 本篇帖子中描述的比較寬…

快速開發 Chrome插件

什么是 Chrome 插件 Chrome 插件程序是一種用于增強 Google Chrome 瀏覽器功能的小型軟件應用程序。它們可以幫助用戶自定義瀏覽體驗、添加新功能、集成外部服務以及自動化任務等。擴展程序使用 HTML、CSS 和 JavaScript 編寫&#xff0c;利用 Chrome 提供的 API 來與瀏覽器及…

18.分布式監控zabbix-proxy

zabbix proxy 使用場景: 監控遠程區域設備監控本地網絡不穩定區域當 zabbix 監控上千設備時,使用它來減輕 server 的壓力簡化分布式監控的維護 環境規劃&#xff1a; zabbix-server&#xff1a;外網IP地址192.168.111.66 zabbix-proxy:外網IP地址192.168.111.11 內網IP地址…

AI工具推薦:提升工作效率與生活質量

有哪些好用&#xff0c;且國內可用的AI工具&#xff1f; 副本 在AI大發展的年代&#xff0c;還有人在工作、生活中沒有使用過AI嗎&#xff1f; 今天為大家推薦幾款國內可用、好用的AI工具&#xff0c;不論是自媒體文案寫作、打工人匯報PPT、還是論文、公文寫作&#xff0c;總…

設計系統采購與安裝:乙級資質申請的技術準備

在設計系統采購與安裝方面&#xff0c;為乙級資質申請所做的技術準備涉及多個方面。以下是一些關鍵的技術準備事項&#xff1a; 明確技術需求&#xff1a;首先&#xff0c;需要明確乙級資質申請所需的技術系統類型和規格。這可能包括但不限于設計軟件、工程管理系統、項目管理系…

【Linux】之【Get√】查看linux CPU 架構 ---- amd64、x86、x86_64、arm64

關于Linux軟件下載時&#xff1a;amd64、x86、x86_64、arm64 的說明 archuanme -alscpu

【設計模式深度剖析】【2】【創建型】【工廠方法模式】

&#x1f448;?上一篇:單例模式 | 下一篇:抽象工廠模式&#x1f449;? 目錄 工廠方法模式概覽工廠方法模式的定義英文原話直譯 工廠方法模式的4個角色抽象工廠&#xff08;Creator&#xff09;角色具體工廠&#xff08;Concrete Creator&#xff09;角色抽象產品&#x…

關于光照模型

關于光照模型 早期學習筆記&#xff0c;轉載自早期Excel。 存在大量格式錯誤、可讀性非常低&#xff0c;建議等待作者修復后閱讀、或者作為查找性材料使用。 中文名英文名/縮寫說明長什么樣蘭伯特光照模型Lambert Lighting1.蘭伯特反射(Lambert)是最常見的一種漫反射&#x…

iptables防火墻【其二 實驗篇】

保存&#xff0c;還原規則 防火墻規則的備份和還原 導出&#xff08;備份&#xff09;所有表的規則 iptables-save > /opt/ipt.txt 導入&#xff08;還原&#xff09;規則 iptables-restore < /opt/ipt.txt 將iptables規則文件保存在 /etc/sysconfig/iptables 中&#xf…

亞馬遜賣家賬號注冊復雜嗎?需要什么輔助工具嗎?

在當今數字化的商業世界中&#xff0c;亞馬遜作為全球最大的電商平臺之一&#xff0c;吸引著無數的賣家和買家。對于想要進入亞馬遜銷售市場的賣家來說&#xff0c;首先要完成的一項重要任務就是注冊亞馬遜賣家賬號。本文將詳細介紹亞馬遜注冊的步驟、所需時間&#xff0c;以及…

LIMS系統能解決實驗室管理的哪些痛點

LIMS&#xff08;Laboratory Information Management System&#xff0c;實驗室信息管理系統&#xff09;在解決實驗室管理的痛點方面發揮著重要作用。以下是LIMS系統能夠解決的一些主要痛點&#xff1a; 一、人工介入大量重復性工作 LIMS系統能夠自動化處理實驗室中的許多重復…

[深度學習]基于yolov8+bytetrack+pyqt5實現車輛進出流量統計+車輛實時測速實現

以前使用過yolov5deepsort實現過車輛進出流量統計車輛實時測速&#xff0c;可以看我往期視頻&#xff0c;這回改成yolov8bytetrack實現&#xff0c;實時性更好&#xff0c;原理和原來一樣。車流量進出統計車速測量優點&#xff1a; 使用目標檢測算法考慮bbox抖動&#xff0c;解…

C-數據結構-單向鏈表(帶頭節點)

單向鏈表帶頭節點&#xff08;head&#xff09;&#xff08;數據域&#xff0c;指針域&#xff09; 隨機訪問性比較差 但是插入刪除操作較為簡單。 list.h #ifndef LIST_H__ #define LIST_H__typedef int datatype;typedef struct node_st {datatype data;struct node_st *ne…