算法系列题目

news2024/12/22 23:04:09

文章目录

  • 一. 下一个更大元素
    • 1. 下一个更大元素 Ⅰ
    • 2. 下一个较大元素II
  • 二. 区间问题
    • 1. 贪心策略
      • 最少射箭问题
      • 无重叠区间
      • 合并区间
      • 划分字母区间
    • 2. 差分数组
  • 三. 设计类题目
    • 1. LRU(最近最少使用)缓存
    • 2. LFU(最不经常使用)缓存

一. 下一个更大元素

1. 下一个更大元素 Ⅰ

添加链接描述
在这里插入图片描述

2. 下一个较大元素II

在这里插入图片描述
添加链接描述

  • 思路分析
    维护单调递减的主栈(用来取结果,题目要求最小,因此是单调递减)和单调递增(跟主栈反过来)的辅助栈
    题目要求的是在当前元素后面比它大,且是最小的那个元素,因此相当于后边的元素要一直用,且排好序,因此想到用一个栈接住弹出的元素,再将其添加到原来的栈中
    为了处理后边的元素排序,因此需要从后边开始遍历
    当主栈不满足单调递减时,弹出元素,且用辅助栈保存结果
import java.util.*;

public class NextElement {
    public int[] findNext(int[] A, int n) {
        int[] res = new int[n];
        Stack<Integer> stack = new Stack<>();//主栈
        Stack<Integer> stack2 = new Stack<>();//辅助栈
        for (int i = n - 1; i >= 0; i--) {
            while (!stack.isEmpty() && stack.peek() <= A[i]) {//保证单调递减
                stack2.push(stack.pop());//用辅助栈保留结果,
            }
            res[i] = stack.isEmpty() ? -1 : stack.peek();//单调递减的栈顶元素为所求
            stack.push(A[i]);//入栈
            while (!stack2.isEmpty()) {//其余元素也需要回到栈
                stack.push(stack2.pop());
            }
        }
        return res;
    }
}

二. 区间问题

1. 贪心策略

最少射箭问题

板子题,排序后,比较后一个元素的左边界和前一个元素的右边界,无重叠+1,出现重叠就更新右边界

无重叠区间

前一题的变形,反过来求结果,区别在于边界相等时的处理不一样

合并区间

前几题的变形,left和right记录最新边界

class Solution {
    public int[][] merge(int[][] intervals) {
        Arrays.sort(intervals,(a,b)->(a[0]-b[0]));
        int left = intervals[0][0];
        int right = intervals[0][1];
        LinkedList<int[]> res = new LinkedList<>();
        for(int i=1;i<intervals.length;i++){
            if(intervals[i][0]>intervals[i-1][1]){
                res.add(new int[]{left,right});
                left = intervals[i][0];
                right = intervals[i][1];
            }else{
                intervals[i][1] = Math.max(intervals[i][1],intervals[i-1][1]);
                right = Math.max(intervals[i][1],intervals[i-1][1]);
            }
        }
        res.add(new int[]{left,right});
        return res.toArray(new int[res.size()][2]);
    }
}

划分字母区间

记录每个字母最大索引,当i==最大索引,则满足条件

2. 差分数组

三. 设计类题目

1. LRU(最近最少使用)缓存

添加链接描述

2. LFU(最不经常使用)缓存

添加链接描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/563969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

磐维数据库panweidb单节点服务器在centos7.9安装(研发环境)

一、系统环境优化 1.1 关闭SELINUX # 修改配置文件 cat /etc/selinux/config | grep -i SELINUX SELINUXdisabled# 关闭SELINUX setenforce 0 1.2 内核参数优化 vi /etc/sysctl.conf 添加# panweidb net.ipv4.tcp_max_tw_buckets 10000 net.ipv4.tcp_tw_reuse 1 net.ipv4.t…

CAS是什么?它的底层原理是什么?

目录 一、CAS概述 二、底层原理 三、总结 一、CAS概述 CAS&#xff08;Compare and Swap&#xff09;比较和交换&#xff1a;是一种并发算法&#xff0c;也是一种乐观锁&#xff0c;从JDK5开始&#xff0c;jdk提供了java.util.concurrent.*,此包下面的类在高并发场景下经常使用…

CTF密码学总结

0x01 目录 常见编码: ASCII编码Base64/32/16编码shellcode编码Quoted-printable编码XXencode编码UUencode编码URL编码Unicode编码Escape/Unescape编码HTML实体编码敲击码(Tap code)莫尔斯电码(Morse Code)编码的故事 各种文本加密 换位加密: 栅栏密码(Rail-fence Cipher)曲路密…

第13届蓝桥杯Scratch选拔赛真题集锦

第13届蓝桥杯Scratch选拔赛真题集锦 编程题 第 1 题问答题 跳舞机游戏 题目说明 编程实现 跳舞机游戏。 具体要求: 1).点击绿旗&#xff0c;舞台左上角显示得分0代表玩家分数&#xff0c;在得分右侧倒计时10代表游戏时长(10s) 2).游戏开始倒数计时&#xff0c;在舞台上随…

目标检测的通用实例提取

论文&#xff1a;General Instance Distillation for Object Detection 论文地址&#xff1a;https://arxiv.org/pdf/2103.02340.pdfhttps://arxiv.org/pdf/2103.02340.pdf 摘要 In recent years, knowledge distillation has been proved to be an effective solution for m…

vulnhub靶场之bassamctf

1.信息收集 探测存活主机&#xff0c;输入&#xff1a;netdiscover -r 192.168.239.0/24 &#xff0c;发现192.168.239.177存活。 对目标主机192.168.239.176进行端口扫描&#xff0c;发现存活22(SSH)、80端口。 在浏览器上输入&#xff1a;http://192.168.239.177&#xff…

网络协议 | 典型协议、B/S模式、C/S模式

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

LeetCode:29. 两数相除

29. 两数相除 1&#xff09;题目2&#xff09;思路3&#xff09;代码1.初始代码2.第一次优化3.第二次优化 4&#xff09;结果1.初始结果2.第一次优化结果3.第二次优化结果 1&#xff09;题目 给你两个整数&#xff0c;被除数 dividend 和除数 divisor。将两数相除&#xff0c;…

es 三 安装 es 安装kibana

目录 安装7.3.0 版本 下载地址 一个比一个快 页面测试访问 安装kibana 下载 Config/kibana.yml 配置修改开启中文 页面访问 安装7.3.0 版本 下载地址 一个比一个快 Index of /elasticsearch/ 下载中心 - Elastic 中文社区 下载中心 - Elastic 中文社区 官网下载 开箱…

CANape使用记录(一):CANape新建工程及标定观测

目录 1、概述 2、新建工程 3、添加观测与标定量 1、概述 CANape具有以下主要组件&#xff1a;在线测量&#xff0c;离线分析&#xff0c;诊断&#xff0c;打印机功能&#xff0c;数据管理&#xff0c;闪存编程&#xff0c;校准&#xff0c;CDM Studio和设备数据库编辑器&…

从工地到办公室:一个土木工程师如何学成测试技能?

提桶跑路成功了&#xff0c;这工地我是再也不来了。 ​ 工作中流的汗真的都是报专业时脑袋里进的水。 当时高考完&#xff0c;对于要学什么专业感到很迷茫&#xff0c;因为姨夫是干工地的&#xff0c;零几年土木专业的大学生&#xff0c;在我们这五线城市一个月也能够拿一万多…

汇聚支付APP+技术方案介绍

一、时序图 商户使用汇聚支付的 APP方案&#xff0c;需要两个步骤&#xff1a; 步骤一&#xff1a; 请求汇聚支付的支付接口&#xff0c;https://www.joinpay.com/trade/uniPayApi.action 获取返回的关键参数 rc_Result。 步骤二&#xff1a; 商户 APP 按照微信的 SDK 规范使…

pdf怎么拆分成一页一页的?办公常备工具说明

PDF&#xff08;Portable Document Format&#xff09;是一种用于创建和共享文档的文件格式。它由Adobe Systems开发&#xff0c;并已成为电子文档的通用格式。PDF文件可以包含文本、图像、表格、超链接和其他多媒体内容&#xff0c;使其成为一种非常方便的文件格式。 然而&…

ChatGPT国内免费使用的网站

ChatGPT是什么意思&#xff1f; ChatGPT全称&#xff1a;Chat Generative Pre-trained Transformer 在英文中“chat”是聊天的意思&#xff0c;GPT是一种预训练语言模型的缩写。 所以ChatGPT是一款功能非常强大的AI&#xff08;人工智能&#xff09;聊天机器人&#xff0c;能…

linux小技巧-如何修改IP(四种方法)

目录 项目场景&#xff1a; 方法分析及步骤介绍 原因分析&#xff1a; 解决方案&#xff1a; 项目场景&#xff1a; 项目上经常遇到修改IP的情况&#xff0c;这里总结一些各个情况下修改IP的方法&#xff0c;尤其时有时候没有主机屏幕显示&#xff0c;借助于命令行的方式修…

MATMacOS安装

MAT MacOS安装 文章目录 MAT MacOS安装第一章 简述第01节 介绍第02节 获取 第二章 配置第01节 显示包内容第02节 MAT配置Java环境变量第03节 MAT兼容低版本Java 第三章 问题第01节 正常启动效果第02节 可能遇到的问题 第一章 简述 第01节 介绍 什么是 MAT 工具&#xff1f; …

【随时更新】知识点回顾

哈夫曼编码和解码 C 哈夫曼编码 【介绍编码过程】 哈夫曼树编码及其图形化的实现 【使用可视化方式展现最终编码效果】 Python中使用哈夫曼算法实现文件的压缩与解压缩 【Python实现】 哈夫曼树 C语言实现 【图解如何生成】 编码过程 1. 使用二进制流&#xff0c;统计当前文件…

如何利用Smartbi电子表格进行财务常用账簿数据的联动查询

财务&#xff0c;是几乎所有企事业单位内部的核心组织。单位今年耗费几何&#xff0c;企业去年赚多少钱&#xff0c;平均成本在什么水平&#xff0c;为国家创造多少税收等等&#xff0c;所有这些信息&#xff0c;最终都通过财务账表的方式来体现。可以说&#xff0c;大家工作辛…

OSI/RM七层网络模型和网络协议

目录 1.OSI/RM七层网络模型1.1 结构图1.2 各层功能 2.OSI七层、TCP/IP四层、五层网络模型对比3.各层对应网络协议3.1 应用层3.2 传输层 1.OSI/RM七层网络模型 OSI/RM&#xff08;Open System Interconnection/Reference Model&#xff0c;开放式系统互联参考模型&#xff09;是…

前端到接口层的反序列化流程

前置知识 参考我的另一篇博客&#xff0c;(209条消息) Servlet和SpringMVC_fengwuJ的博客-CSDN博客&#xff0c;描述了Servlet与SpringMVC的关系&#xff0c;大致可以知道从前端请求&#xff0c;到后端接口的中间过程 反序列化流程 前篇文章中&#xff0c;走到 getMethodPara…