最小數字游戲(Lc2974)——模擬+優先隊列(小根堆)、排序+交換

你有一個下標從?0?開始、長度為?偶數?的整數數組?nums?,同時還有一個空數組?arr?。Alice 和 Bob 決定玩一個游戲,游戲中每一輪 Alice 和 Bob 都會各自執行一次操作。游戲規則如下:

  • 每一輪,Alice 先從?nums?中移除一個?最小?元素,然后 Bob 執行同樣的操作。
  • 接著,Bob 會將移除的元素添加到數組?arr?中,然后 Alice 也執行同樣的操作。
  • 游戲持續進行,直到?nums?變為空。

返回結果數組?arr?。

示例 1:

輸入:nums = [5,4,2,3]
輸出:[3,2,5,4]
解釋:第一輪,Alice 先移除 2 ,然后 Bob 移除 3 。然后 Bob 先將 3 添加到 arr 中,接著 Alice 再將 2 添加到 arr 中。于是 arr = [3,2] 。
第二輪開始時,nums = [5,4] 。Alice 先移除 4 ,然后 Bob 移除 5 。接著他們都將元素添加到 arr 中,arr 變為 [3,2,5,4] 。

示例 2:

輸入:nums = [2,5]
輸出:[5,2]
解釋:第一輪,Alice 先移除 2 ,然后 Bob 移除 5 。然后 Bob 先將 5 添加到 arr 中,接著 Alice 再將 2 添加到 arr 中。于是 arr = [5,2] 。

提示:

  • 1 <= nums.length <= 100
  • 1 <= nums[i] <= 100
  • nums.length % 2 == 0

問題簡要描述:返回結果數組?

解法一

Java

class Solution {public int[] numberGame(int[] nums) {int[] ans = new int[nums.length];PriorityQueue<Integer> pq = new PriorityQueue<>();for (int num : nums) {pq.offer(num);}int i = 0;while (!pq.isEmpty()) {int p = pq.poll();ans[i++] = pq.poll();ans[i++] = p;}return ans;}
}

Python3

class Solution:def numberGame(self, nums: List[int]) -> List[int]:heapify(nums)ans = []while nums:a, b = heappop(nums), heappop(nums)ans.append(b)ans.append(a)return ans        

TypeScript

function numberGame(nums: number[]): number[] {let pq = new MinPriorityQueue();for (const x of nums) {pq.enqueue(x);}const ans: number[] = [];while (pq.size()) {const a = pq.dequeue().element;const b = pq.dequeue().element;ans.push(b, a);}return ans;    
};

C++

class Solution {
public:vector<int> numberGame(vector<int>& nums) {priority_queue<int, vector<int>, greater<int>> pq;for (int x : nums) {pq.push(x);}vector<int> ans;while (pq.size()) {int a = pq.top();pq.pop();int b = pq.top();pq.pop();ans.emplace_back(b);ans.emplace_back(a);}return ans;        }
};

解法二

Java

class Solution {public int[] numberGame(int[] nums) {Arrays.sort(nums);for (int i = 0; i < nums.length; i += 2) {int t = nums[i];nums[i] = nums[i + 1];nums[i + 1] = t;}return nums;}
}

?Python3

class Solution:def numberGame(self, nums: List[int]) -> List[int]:nums.sort()for i in range(0, len(nums), 2):nums[i], nums[i + 1] = nums[i + 1], nums[i]return nums

TypeScript

function numberGame(nums: number[]): number[] {nums.sort((a, b) => a - b);for (let i = 0; i < nums.length; i += 2) {[nums[i], nums[i + 1]] = [nums[i + 1], nums[i]];}return nums; 
};

C++

class Solution {
public:vector<int> numberGame(vector<int>& nums) {sort(nums.begin(), nums.end());for (int i = 0; i < nums.size(); i+=2){swap(nums[i], nums[i + 1]);}return nums;      }
};

Go

func numberGame(nums []int) []int {sort.Ints(nums)for i := 0; i < len(nums); i += 2 {nums[i], nums[i+1] = nums[i+1], nums[i]}return nums
}

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

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

相關文章

力扣 383贖金信

思路&#xff0c;用unordered_map存儲magazine中字符以及字符出現的次數 遍歷ransomNote中每個字符&#xff0c;如果能在map中找到&#xff0c;則對應value減一&#xff0c;如果字符對應的value小于零&#xff0c;意味著magazine中找不到與ransomNote里這個字符對應的字符&…

翁愷-C語言程序設計-05-3. 求a的連續和

05-3. 求a的連續和 輸入兩個整數a和n&#xff0c;a的范圍是[0,9]&#xff0c;n的范圍是[1,8]&#xff0c;求數列之和S aaaaaa…aaa…a&#xff08;n個a&#xff09;。如a為2、n為8時輸出的是222222…22222222的和。 輸入格式&#xff1a; 輸入在一行中給出兩個整數&#xf…

VUE_TypeError: Cannot convert a BigInt value to a number at Math.pow 解決方法

錯誤信息 TypeError: Cannot convert a BigInt value to a number at Math.pow vue 或 react package.json添加 "browserslist": {"production": ["chrome > 67","edge > 79","firefox > 68","opera >…

實戰演練-2021年電賽國一之三端口DC-DC變換器

文章目錄 前言一、題目二、題目分析1、題目要求解析2、題目方案選定方案一(使用buck-boost電路&#xff0b;雙向DC-DC電路&#xff08;前端&#xff09;)方案二(使用同步整流Boost升壓電路&#xff0b;雙向DC-DC電路&#xff08;前端&#xff09;)方案三(使用同步整流Boost升壓…

實時聊天 Vue + Vuex + sockjs-client + stompjs進行websocket連接

實時聊天 知識點WebSocket介紹SockJSSTOMP 開發環境功能實現安裝應用在vuex中創建vue中的引入、監聽、實例化與收發、訂閱消息引入組件實例化與訂閱計算屬性監聽收到消息封裝的發送消息的公共方法發送消息 完整的代碼 知識點 WebSocket介紹 WebSocket 是一種在 Web 應用中實現…

二叉搜索樹大冒險:尋找-插入-刪除

OK&#xff0c;看我們題目就可知道啦&#xff0c;今天要分享學習的一種數據結構就是二叉搜索樹。 內容題目也說了三個大概的&#xff0c;分別是尋找、插入、刪除。 講這個之前呢&#xff0c;那么就先講講這個二叉搜索樹是何方神圣呢&#xff1f; 二叉搜索樹&#xff1a; 又…

【學習筆記】無人機(UAV)在3GPP系統中的增強支持(五)-同時支持無人機和eMBB用戶數據傳輸的用例

引言 本文是3GPP TR 22.829 V17.1.0技術報告&#xff0c;專注于無人機&#xff08;UAV&#xff09;在3GPP系統中的增強支持。文章提出了多個無人機應用場景&#xff0c;分析了相應的能力要求&#xff0c;并建議了新的服務級別要求和關鍵性能指標&#xff08;KPIs&#xff09;。…

全網最詳細單細胞保姆級分析教程(二) --- 多樣本整合

上一節我們研究了如何對單樣本進行分析,這節我們就著重來研究一下如何對多樣本整合進行研究分析! 1. 導入相關包 library(Seurat) library(tidyverse) library(patchwork)2. 數據準備 # 導入單樣本文件 dir c(~/Desktop/diversity intergration/scRNA_26-0_filtered_featur…

Linux上如何安裝ffmpeg視頻處理軟件

在Linux上安裝ffmpeg需要以下步驟&#xff1a; 更新系統 在開始安裝之前&#xff0c;首先需要更新系統以獲取最新的軟件包列表和版本。在終端中執行以下命令&#xff1a; sudo apt update sudo apt upgrade安裝依賴庫 ffmpeg依賴于一些庫和工具&#xff0c;需要先安裝它們。在…

【香橙派 Orange pi AIpro】| 開發板深入使用體驗

目錄 一. &#x1f981; 寫在前面二. &#x1f981; 愉快的安裝流程2.1 安裝前準備2.2 流程準備2.2.1 燒錄鏡像2.2.2 開機2.2.3 連網2.2.4 SSH遠程連接開發板 2.3 體驗 AI 應用樣例 三. &#x1f981; 寫在最后 一. &#x1f981; 寫在前面 大家好&#xff0c;我是獅子呀&…

醫療級微型導軌:保障醫療行業手術安全!

微型直線導軌能成為一種專為醫療行業設備運用的高精度線性運動設備&#xff0c;在現代醫療領域&#xff0c;精準的位置控制和平穩的運動對于確保醫療設備的高效性能至關重要。那么&#xff0c;醫療行業對微型導軌有哪些要求呢&#xff1f; 1、精度&#xff1a;在手術過程中&…

C++客戶端Qt開發——開發環境

一、QT開發環境 1.安裝三個部分 ①C編譯器&#xff08;gcc&#xff0c;cl.exe……) ②QT SDK SDK-->軟件開發工具包 比如&#xff0c;windows版本QT SDK里已經內置了C的編譯器&#xff08;內置編譯器是mingw&#xff0c;windows版本的gcc/g&#xff09; ③QT的集成開發…

Python編程中用函數還是用復雜的表達式

要不要使用復雜表達式 Perl語言的原作者Larry Wall曾經說過&#xff0c;偉大的程序員都有三個優點&#xff1a;懶惰、暴躁和自負。乍一看這三個詞語沒有一個是褒義詞&#xff0c;但在程序員的世界里&#xff0c;這三個詞有不同的意義。首先&#xff0c;懶惰會促使程序員去寫一…

智慧園區規劃建設解決方案PPT(40頁)

智慧園區規劃建設解決方案摘要 1. 園區定義與發展歷程 園區&#xff0c;亦稱開發區&#xff0c;是在特定產業和區域政策指導下形成的區域。它們通過提供基礎設施和生產空間&#xff0c;吸引投資&#xff0c;形成技術、資本密集區&#xff0c;推動經濟發展。園區發展經歷了四代…

Docker 部署 ShardingSphere-Proxy 數據庫中間件

文章目錄 Github官網文檔ShardingSphere-Proxymysql-connector-java 驅動下載conf 配置global.yamldatabase-sharding.yamldatabase-readwrite-splitting.yamldockerdocker-compose.yml Apache ShardingSphere 是一款分布式的數據庫生態系統&#xff0c; 可以將任意數據庫轉換為…

【qt】TCP客戶端信息的接受和發送

當有信息時的槽函數關聯 跟服務端收到信息一樣,當可以讀一行的時候,就從套接字讀一行. 發送信息也是和服務端如出一轍,通過write(). 運行結果:

java EnumSet 介紹

EnumSet 是 Java Collections Framework 中專門為枚舉類型設計的高效集合實現。與其他集合類相比,EnumSet 提供了許多優點,如高效性、類型安全和易用性。它只能包含單個枚舉類型的值,并且在內部使用位向量實現,因而在空間和時間上都非常高效。 EnumSet 的特點 高效性:Enu…

Spring MVC 中的文件上傳 和 文件下載

Spring MVC 中的文件上傳 和 文件下載 文章目錄 Spring MVC 中的文件上傳 和 文件下載1. Spring MVC 中的文件上傳2. Spring MVC 中的文件下載3. 總結&#xff1a;4. 最后&#xff1a; 1. Spring MVC 中的文件上傳 文件上傳是&#xff1a;瀏覽器端向服務器發送文件&#xff0c…

C 語言結構體

由于近期項目需求,需使用到大量的指針與結構體&#xff0c;為更好的完成項目&#xff0c;故對結構體與指針的內容進行回顧&#xff0c;同時撰寫本博客&#xff0c;方便后續查閱。 本博客涉及的結構體知識有&#xff1a; 1.0&#xff1a;結構體的創建和使用 2.0: typedef 關…

解鎖音樂密碼,人工智能創作動人歌詞

在音樂的神秘世界里&#xff0c;每一段旋律都像是一把等待開啟的密碼鎖&#xff0c;隱藏著無盡的情感與故事。而如今&#xff0c;人工智能正以其獨特的智慧和創造力&#xff0c;幫助我們解鎖這些音樂密碼&#xff0c;創作出動人的歌詞。 “妙筆生詞智能寫歌詞軟件&#xff08;…