LeetCode 刷題 [C++] 第215題.數組中的第K個最大元素

題目描述

給定整數數組 nums 和整數 k,請返回數組中第 k 個最大的元素。
請注意,你需要找的是數組排序后的第 k 個最大的元素,而不是第 k 個不同的元素。
你必須設計并實現時間復雜度為 O(n) 的算法解決此問題。

在這里插入圖片描述

題目分析

  1. 根據題意分析,我們可以考慮使用快速排序算法來解決這個問題,但是由于快速排序的時間復雜度為nlog(n),且當包含大量重復元素的數組時,時間復雜度會退化至 O(N^2),因此我們需要做一些優化處理:

我們在拆分的過程中,每輪遞歸劃分數組時,將數組劃分為三個部分:大于、等于和小于基準數。
如果劃分得到的基準數pivot對應的下標正好是我們需要的,則直接返回pivot;
如果pivot比目標值大,則遞歸左子數組,反之遞歸右子數組;
這樣就只需要遞歸一個區間就可以了。

  1. 為了進一步提升算法的穩健性,我們采用隨機選擇的方式來選定基準數。

Code

class Solution {
public:int findKthLargest(vector<int>& nums, int k) {int pivot = nums[rand() % nums.size()];vector<int> big, equal, small;for (int num : nums) {if (num > pivot) {big.emplace_back(num);} else if (num < pivot) {small.emplace_back(num);} else {equal.emplace_back(num);}}if (k <= big.size()) {return findKthLargest(big,k);}if (nums.size() - small.size() < k) {return findKthLargest(small, k + small.size() - nums.size());}return pivot;}
};

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

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

相關文章

MYSQL 刪除命令 delete、truncate 、drop

目錄 一、delete 二、truncate 三、drop 四、delete&#xff0c;drop&#xff0c;truncate的區別 一、delete 作用&#xff1a;僅僅刪除表數據&#xff0c;表結構保留&#xff0c;數據能回滾 命令格式 #刪除全部數據 delete from 表名;#刪除表中id為1的數據&#xff0c;…

CleanMyMac X2024一款專為Mac用戶設計的優化工具

親愛的用戶們&#xff0c;我們都知道電腦在長時間使用后會變得越來越慢&#xff0c;垃圾文件和無用的應用程序會占用我們的硬盤空間&#xff0c;讓我們的電腦變得像蝸牛一樣慢。但是&#xff0c;現在有一個解決方案可以讓你的電腦重獲新生&#xff0c;那就是CleanMyMac X&#…

oracle鎖表

select alter system kill session ||sess.sid||,||sess.serial#||; bb,sess.sid,sess.serial#, lo.oracle_username,--登錄賬號lo.os_user_name,--登錄電腦ao.object_name,--被鎖表名lo.locked_mode --鎖住級別from v$locked_object lo,dba_objects ao,v$session sess where a…

第七十一天 漏洞發現-Web框架中間件聯動GobyAfrogXrayAwvsVulmap

第71天 漏洞發現-Web框架中間件&聯動&Goby&Afrog&Xray&Awvs&Vulmap 知識點&#xff1a; 1、Bup簡單介紹&使用說明 2、Xray簡單介紹&使用說明 3、AWWS簡單介紹&使用說明 4、Goby簡單介紹&使用說明 5、Afrog簡單介紹&使用說明 6、…

泰迪智能科技企業數據挖掘平臺使用場景

企業數據挖掘平臺助力企業數據挖掘&#xff0c;數據挖掘平臺也在多個領域發揮著重要的作用。 企業數據挖掘平臺具有數據抓取、數據清洗、數據分析、機器學習等多項功能&#xff0c;廣泛應用于企業的各個領域&#xff0c;包括&#xff1a;金融行業、醫療行業、交通領域、教育、制…

學習linux從0到工程師(命令)-4

基本命令 uname -m 顯示機器的處理器架構 uname -r 顯示正在使用的內核版本 dmidecode -q 顯示硬件系統部件 (SMBIOS / DMI) hdparm -i /dev/hda 羅列一個磁盤的架構特性 hdparm -tT /dev/sda 在磁盤上執行測試性讀取操作系統信息 arch 顯示機器的處理器架構 uname -m 顯示機器…

在OceanBase使用中,如何優化因Join估算不準導致執行計劃選錯的問題

作者&#xff1a;胡呈清&#xff0c;愛可生公司旗下的DBA團隊成員&#xff0c;擅長故障分析和性能優化。愛可生開源社區出品&#xff0c;原創內容未經授權不得隨意使用&#xff0c;轉載請聯系小編并注明來源。本文約 1600 字&#xff0c;預計閱讀需要 15 分鐘。 數據庫版本&…

RunnerGo UI自動化測試腳本如何配置

RunnerGo提供從API管理到API性能再到可視化的API自動化、UI自動化測試功能模塊&#xff0c;覆蓋了整個產品測試周期。 RunnerGo UI自動化基于Selenium瀏覽器自動化方案構建&#xff0c;內嵌高度可復用的測試腳本&#xff0c;測試團隊無需復雜的代碼編寫即可開展低代碼的自動化…

OpenXR 超詳細的spec

3.API 初始化 3.2 Function Pointers XrResult xrGetInstanceProcAddr(XrInstance instance,const char* name,PFN_xrVoidFunction* function); instance: XrInstance類型&#…

【LeetCode】121. 買賣股票的最佳時機(簡單)——代碼隨想錄算法訓練營Day48

題目鏈接&#xff1a;121. 買賣股票的最佳時機 題目描述 給定一個數組 prices &#xff0c;它的第 i 個元素 prices[i] 表示一支給定股票第 i 天的價格。 你只能選擇 某一天 買入這只股票&#xff0c;并選擇在 未來的某一個不同的日子 賣出該股票。設計一個算法來計算你所能…

BetterDisplay Pro for Mac v2.0.11激活版:屏幕顯示優化專家

BetterDisplay Pro是一款由waydabber開發的Mac平臺上的顯示器校準軟件&#xff0c;可以幫助用戶調整顯示器的顏色和亮度&#xff0c;以獲得更加真實、清晰和舒適的視覺體驗。 軟件下載&#xff1a;BetterDisplay Pro for Mac v2.0.11激活版下載 &#x1f50d; 精準校準&#xf…

Unity的相機跟隨和第三人稱視角

Unity相機跟隨和第三人稱視角 介紹鏡頭視角跟隨人物方向進行旋轉的鏡頭視角固定球和人的鏡頭視角 思路跟隨人物方向進行旋轉的鏡頭視角固定球和人的鏡頭視角 鏡頭旋轉代碼人物移動的參考代碼注意 介紹 最近足球項目的鏡頭在做改動&#xff0c;觀察了一下實況足球的視角&#x…

npm digital envelope routines::unsupported

問題描述&#xff1a;npm運行命令報錯&#xff1a;digital envelope routines::unsupported 原因&#xff1a;node版本過高 解決方案&#xff1a;在運行命令之前加上 SET NODE_OPTIONS--openssl-legacy-provider && SET NODE_OPTIONS--openssl-legacy-provider &&a…

阿里云服務器免費6個月,居然又出了企業版

我之前收到了阿里云的免費6個月服務器&#xff0c;現在上面掛著一些網頁。 由于帶寬只有1M&#xff0c;所以用得不多。 今晚本來打算買臺新服務器&#xff0c;發現阿里云6個月免費促銷居然出了企業版。 之前只有一個版本。 我手頭正好有資源&#xff0c;于是又免費來了一臺服…

Eslint在Vscode中使用技巧的相關技巧

ps :該文章會詳細記錄構建一個腳手架遇到的問題&#xff0c;會持續更新&#xff0c;請定時查看 Eslint相關? 在vscode中使用eslint插件 在vscode中用戶配置沒有開啟eslint.enable 在vscode中工作區配置開啟eslint.enable settings.json中沒有做eslint相關配置 在編寫的vue…

敏捷方法簡介

敏捷方法簡介 特點 適應性&#xff0c;應對變化以人為本&#xff0c;發揮人的特性迭代增量式開發&#xff0c;逐版本更新 實踐 極限編程 特點 加強交流從簡單做起尋求反饋實事求是 水晶系列方法 特點 以人為中心&#xff0c;機動性一組經過證明、對不同類型項目非常有效…

【QT】Qt Charts概述

目錄 1 QtCharts模塊 2 圖表的主要組成部分 2.1 QChartView的功能 2.2 序列 2.3 坐標軸 2.4 圖例 3 一個簡單的QChart繪圖程序 QtCharts是Qt提供的圖表模塊&#xff0c;在Qt5.7以前只有商業版才有Qt Charts&#xff0c;但是從Qt5.7開始&#xff0c;社區版本也包含了Qt C…

藍橋杯倒計時41天!DFS進階1——回溯

DFS進階1——回溯 先說一下回溯的板子 dfs(){ for(......){標記信息dfs()撤銷標記 } }回溯模板——遞歸實現排列型枚舉 題目分析 其實就是對1~n的數字全排列&#xff0c;這里就可以用dfs去做&#xff0c;1~n全排列我其實是確定每一個位置我應該放哪一個數字&#xff0c;那么…

Qt程序設計-解析和生成json詳解

目錄 概述 JSON的兩種結構 解析和生成json 解析對象結構 生成對象結構

【MySQL】mvcc以及三個重要日志

&#x1f34e;個人博客&#xff1a;個人主頁 &#x1f3c6;個人專欄&#xff1a;【】數據庫 ?? 功不唐捐&#xff0c;玉汝于成 目錄 前言 正文 MVCC關鍵概念&#xff1a; MVCC機制的優點&#xff1a; 三個重要的日志&#xff1a; 重做日志&#xff1a; 回滾日志&am…