HOT100--Day25--84. 柱狀圖中最大的矩形,215. 數組中的第K個最大元素,347. 前 K 個高頻元素

HOT100–Day25–84. 柱狀圖中最大的矩形,215. 數組中的第K個最大元素,347. 前 K 個高頻元素

每日刷題系列。今天的題目是《力扣HOT100》題單。

題目類型:棧,堆。

84. 柱狀圖中最大的矩形

思路:

class Solution {public int largestRectangleArea(int[] heights) {int n = heights.length;int[] left = new int[n];Deque<Integer> stack = new ArrayDeque<>();for (int i = 0; i < n; i++) {int h = heights[i];while (!stack.isEmpty() && heights[stack.peek()] >= h) {stack.pop();}left[i] = stack.isEmpty() ? -1 : stack.peek();stack.push(i);}int[] right = new int[n];stack.clear();for (int i = n - 1; i >= 0; i--) {int h = heights[i];while (!stack.isEmpty() && heights[stack.peek()] >= h) {stack.pop();}right[i] = stack.isEmpty() ? n : stack.peek();stack.push(i);}int res = 0;for (int i = 0; i < n; i++) {res = Math.max(res, heights[i] * (right[i] - left[i] - 1));}return res;}
}

215. 數組中的第K個最大元素

思路:

class Solution {public int findKthLargest(int[] nums, int k) {PriorityQueue<Integer> h = new PriorityQueue<>((a, b) -> Integer.compare(b, a));for (int x : nums) {h.offer(x);}while (k-- > 1) {h.poll();}return h.peek();}
}

347. 前 K 個高頻元素

思路:

// Comparator接口說明:返回負數,形參中第一個參數排在前面;返回正數,形參中第二個參數排在前面
// lambda 表達式設置優先級隊列從大到小存儲 o1 - o2 為從小到大,o2 - o1 反之
class Solution {public int[] topKFrequent(int[] nums, int k) {int[] res = new int[k];Map<Integer, Integer> map = new HashMap<>();// 沒想到這里竟然可以<int[]>,一直以為這里只能放包裝類PriorityQueue<int[]> pq = new PriorityQueue<>((o1, o2) -> o1[1] - o2[1]);int n = nums.length;// Map<元素,出現次數>統計for (int i = 0; i < n; i++) {map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);}// 這里可以寫成for(var entry : Map.entrySet()),不知道從哪個版本開始有的特性,可以用varfor (Map.Entry<Integer, Integer> entry : map.entrySet()) {int[] e = new int[2];e[0] = entry.getKey();e[1] = entry.getValue();// 先添加到小頂堆,會自動排序pq.offer(e);// 如果元素大于K個,隊頭出隊,也就是最小值出隊if (pq.size() > k) {pq.poll();}}// 循環結束之后,小頂堆的k個元素就是答案,放到res[]數組里面for (int i = 0; i < k; i++) {res[i] = pq.poll()[0];}return res;}
}

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

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

相關文章

基于 Apache Doris 的用戶畫像數據模型設計方案

一、 需求分析與設計目標數據源&#xff1a;用戶基本信息&#xff1a;用戶ID、性別、出生日期、注冊時間、常駐地域&#xff08;省、市、區&#xff09;、職業等。用戶體檢報告&#xff1a;每次體檢的報告ID、體檢時間、各項指標&#xff08;如血壓、血糖、血脂、BMI等&#xf…

Python的深度學習

深入理解Python高級特性掌握Python的高級特性是進階的關鍵&#xff0c;包括裝飾器、生成器、上下文管理器、元類等。這些特性能夠提升代碼的靈活性和效率。例如&#xff0c;裝飾器可以用于實現AOP&#xff08;面向切面編程&#xff09;&#xff0c;生成器可以處理大數據流而無需…

數據庫范式(Normalization)

一個設計混亂的數據庫就像一個雜亂的房間&#xff0c;用起來非常不方便&#xff1a;東西到處亂放&#xff08;數據冗余&#xff09;&#xff0c;找件東西要翻遍所有角落&#xff08;查詢困難&#xff09;&#xff0c;扔掉一把舊椅子時&#xff0c;可能會把搭在上面的唯一一件外…

數據結構---循環隊列

基于循環數組實現的循環隊列解決了順序隊列中的假溢出導致的空間浪費問題操作&#xff1a;&#xff08;1&#xff09;初始化//循環隊列 typedef struct {int *data;//指針模擬聲明數組int head,tail;//隊頭&#xff0c;隊尾 }Queue; //初始化 Queue *InitQueue() {Queue *q (Q…

深入理解線程模型

線程作為操作系統調度的基本執行單元&#xff0c;是實現高吞吐、低延遲系統的基礎。一、進程與線程的體系結構對比核心概念&#xff1a;進程&#xff08;Process&#xff09;&#xff1a;操作系統資源分配的基本單位&#xff0c;擁有獨立的虛擬地址空間、文件描述符表、環境變量…

TTC定時器中斷——MPSOC實戰3

開啟TTC定時器&#xff0c;不同于7000系列的私有定時器此處設置LPD_LSBUS頻率TTC頻率取決于LPD_LSBUS可前往指定位置查看參數不使能填寫對應宏可前往指定位置查看參數main.c#include <stdio.h> #include "xparameters.h" #include "xgpiops.h" #incl…

人工智能訓練師三級備考筆記

一、實操1&#xff09;通用語法&#xff08;常見于實操題第一塊代碼塊&#xff09;1.讀取文件數據或加載數據集等描述時一般為以下結構&#xff1a;Datapd.read_文件格式(文件名) 注意&#xff1a;文件名需要用‘ ’框起來&#xff0c;必須要有引號文件格式有以下內容csv、txt…

Cherry Studio遞歸工具調用機制深度解析

在現代AI應用開發中,工具調用(Tool Calling)已成為大語言模型與外部系統交互的核心機制。Cherry Studio作為一款先進的AI對話客戶端,實現了一套完整的遞歸工具調用系統,能夠讓AI助手在執行復雜任務時自動調用多個工具,并根據執行結果智能決策下一步操作。本文將深入解析這…

[哈希表]966. 元音拼寫檢查器

966. 元音拼寫檢查器 class Solution:def spellchecker(self, wordlist: List[str], queries: List[str]) -> List[str]:origin set(wordlist) # 存儲原始單詞用于完全匹配lower_to_origin {} # 存儲小寫形式到原始單詞的映射vowel_to_origin {} # 存儲元音模糊形…

正則表達式與文本三劍客(grep、sed、awk)基礎與實踐

正則表達式基礎與實踐一、正則表達式概述1. 定義正則表達式&#xff08;Regular Expression&#xff0c;簡稱 RE&#xff09;是用于描述字符排列和匹配模式的語法規則&#xff0c;核心作用是對字符串進行分割、匹配、查找、替換操作。它本質是 “模式模板”&#xff0c;Linux 工…

eclipse中web項目編譯后的lib里面jar為空問題處理

1. 檢查項目構建配置驗證項目性質右鍵單擊項目 → Properties確認項目已正確配置&#xff1a;?Project Facets?&#xff1a;確保已勾選"Dynamic Web Module"?Targeted Runtimes?&#xff1a;確保已選擇服務器運行時&#xff08;如Tomcat&#xff09;檢查部署程序…

C語言中的遞歸問題——漢諾塔問題

漢諾塔&#xff08;Tower of Hanoi)&#xff0c;又稱河內塔&#xff0c;是一個源于印度古老傳說的益智玩具。傳說大梵天創造世界的時候做了三根金剛石柱子&#xff0c;在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在…

ArkAnalyzer源碼初步分析I——分析ts項目流程

1.前言&#xff1a; 鴻蒙程序分析框架ArkAnalyzer&#xff08;方舟分析器&#xff09; 源碼地址 入門文檔 2.閱讀入門文檔后&#xff1a; 本人具有一定的Java開發經驗。雖然我對 TypeScript&#xff08;TS&#xff09;和 ArkTS 還不熟&#xff0c;但很多概念對我這個 Java 開…

c#基礎二(類和對象,構造器調用順序、訪問級別、重寫和多態、抽象類和接口)

一、類1.0對象初始化器class Student {public String name;public int age { get; set; } } internal class Program {static void Main(string[] args){ //寫法一Student stunew Student();stu.name"Tom";stu.age20;//寫法二Student stu2 new Student { name &qu…

Qt之快捷鍵、事件處理、自定義按鍵——完成記事本項目

快捷鍵我們電腦中的記事本中還支持快捷鍵&#xff0c;如“CTRLO”打開文件、“CTRLS”保存文件在Qt中使用QShortcut這個類創建快捷鍵在.cpp文件的構造函數中創建QShortcut對象&#xff0c;綁定打開文件和保存文件的槽函數放大縮小字體還是在.cpp的構造函數中編寫代碼Widget::Wi…

Open cascade中如何使用BRepAlgoAPI_Splitter分割一個Face

理論介紹 在OpenCASCADE幾何建模內核中&#xff0c;BRepAlgoAPI_Splitter是一個強大的工具&#xff0c;用于將一個形狀&#xff08;Shape&#xff09;用另一個形狀&#xff08;Tool&#xff09;進行分割。這種操作在CAD建模中非常常見&#xff0c;比如用平面切割實體、用曲線分…

【醫療 AI】Baichuan-M2 醫療大模型:技術解讀與使用方法

【醫療 AI】Baichuan-M2 醫療大模型&#xff1a;技術解讀與使用方法1. Baichuan-M2 醫療大模型簡介1.1 基本信息1.2 下載地址1.3 技術特點2. Baichuan-M2 模型技術報告2.1 摘要2.2 醫學性能評估2.2.1 HealthBench基準2.2.2 中國醫療場景對比評估2.3 系統架構2.3.1 驗證器系統2.…

unity pcd 二進制版 簡單顯示文件對象(單色)

unity Point Cloud Viewer and Tool 那個插件不支持pcd二進制&#xff0c;而且網上到處都是AI 我恨這種AI濫用&#xff0c;提供不了一點價值 好了&#xff0c;言歸正傳 可以在Point Cloud Viewer and Tool這個插件報錯地方轉用這個代碼&#xff0c;具體咋結合請自行研究。 …

強大的開源文檔問答工具-Kotaemon

Kotaemon 是一個基于 RAG&#xff08;Retrieval-Augmented Generation&#xff09;架構的開源文檔問答工具&#xff0c;為用戶提供與文檔對話的智能交互體驗。該項目同時服務于終端用戶和開發者&#xff0c;具有高度的可擴展性和定制化能力。技術棧分析核心技術棧后端框架Pytho…

區塊鏈:搭建簡單Fabric網絡并調用智能合約

使用docker服務搭建Hyperledger/fabric網絡的詳細教程&#xff0c;實現構建多節點的簡單聯盟鏈&#xff0c;并編寫、調用智能合約實現投票業務。 目錄 背景知識 Hyperledger Fabric 基本組件 交易(Transaction) 智能合約 實驗目的 實驗環境 基礎依賴 安裝Golang 安裝do…