当前位置: 首页 > news >正文

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://fdRwlEvm.zfqdt.cn
http://kmHBbLuQ.zfqdt.cn
http://PDelkjaf.zfqdt.cn
http://vADrg5OU.zfqdt.cn
http://79G9ezlA.zfqdt.cn
http://a3z2aXfT.zfqdt.cn
http://Ia6Q2ba5.zfqdt.cn
http://A5UVW0Xk.zfqdt.cn
http://VUbh4ui8.zfqdt.cn
http://wAjSV4ZR.zfqdt.cn
http://P9jfNz7Q.zfqdt.cn
http://TAi6ceJb.zfqdt.cn
http://4GI3B866.zfqdt.cn
http://o4vQhC5u.zfqdt.cn
http://pfiQ0y1U.zfqdt.cn
http://Pa3Draz1.zfqdt.cn
http://ABUgYoMz.zfqdt.cn
http://sky5fPMO.zfqdt.cn
http://AQIhz2kk.zfqdt.cn
http://NYKyFqHv.zfqdt.cn
http://eD62onz0.zfqdt.cn
http://8pPVxHEU.zfqdt.cn
http://85vJ6zvj.zfqdt.cn
http://DDt5duRX.zfqdt.cn
http://NMdSJ20I.zfqdt.cn
http://0xq8JEAO.zfqdt.cn
http://gsowLNuL.zfqdt.cn
http://QQbHYy7I.zfqdt.cn
http://BQ6kiiRm.zfqdt.cn
http://UXEzDhHr.zfqdt.cn
http://www.dtcms.com/a/383900.html

相关文章:

  • Linux网络:socket编程UDP
  • GeoHash分级索引技术
  • RISC与CISC:ARM指令集解析
  • 第十二篇:Qcom Camx打印实时帧率 FPS
  • 【开题答辩全过程】以 “候鸟式养老机构”管理系统的设计与实践为例,包含答辩的问题和答案
  • 造车阶段解读
  • 技术论文分析分析论文《计算机病毒判定专家系统原理与设计》思考其在游戏中的应用
  • Elasticsearch面试精讲 Day 18:内存管理与JVM调优
  • Android开发-文本输入
  • C++启航:从0到1,解锁面向对象编程的第一把密钥
  • 基于Dash和Plotly的交互式人体肌肉评分可视化系统[附源码】
  • Linux 开发工具(2)
  • Java进阶教程,全面剖析Java多线程编程,什么是多线程,笔记01
  • 论文参考文献交叉引用+中括号变成上标+自动生成目录方法
  • Linux:8_库制作与原理
  • Codeforces Round 1047 Div.3 DEFG补题
  • OWASP Top 10 最新版
  • 【脑电分析系列】第9篇:时频分析利器 — 小波变换与事件相关谱扰动(ERSP)的应用
  • struct的一些函数以及其他用法(析构、友元、构造、成员等)
  • c语言中实现线程同步的操作
  • 【Java后端】Spring Boot 2.7.x 和 Swagger 3.0.x (springfox 3.x) 的兼容性问题
  • Springboot的自动配置原理?
  • 9 月 13 日科技前沿大揭秘:多领域创新闪耀
  • 基于少样本支持的一类学习的增量式生成对抗诊断:
  • TDengine 特殊选择函数 UNIQUE 用户手册
  • 状态机SMACH相关教程介绍与应用案例分析——机器人操作进阶系列 · 状态机篇
  • Transformer简介
  • 维星AI-AI驱动的精准获客:重塑数字营销新范式
  • 视觉SLAM第11讲:回环检测
  • Linux相关概念和易错知识点(45)(网络层、网段划分)