力扣每日一题 ---- 2905. 找出满足差值条件的下标 II

news2024/12/25 9:07:39

这道题带有绝对值差的题,一看就是双指针的题,并且还带有两个限制,那么我们的做法就是

固定一个条件,维护一个条件

本题还用到了一个贪心思路,会介绍到

那我们怎么固定一个条件,维护一个条件?

并且固定哪一个条件,维护哪一个条件更好呢?

1.如果是固定大小,维护下标,那么我们需要先排序,才能使用双指针

2.如果是固定下标,维护大小,那么我们不需要排序,那么时间复杂度就比第一种好,选第二种

这里我们怎么维护大小呢?(如果是枚举j,固定j下标,那么我们要算出i和i之前有效范围内最大最小值,如果前面有最大最小值符合,那么我们就符合)

那么怎么说明只要最大最小值符合我们就符合呢,因为abs( ? -  nums[j]) 要想val最大,那么需要?最大或最小才能使的差值最大(这里就是一个贪心)

我们枚举下标j,那么可以知道 i <= j - indexDifference,算出i,然后i , j就像滑动窗口一样固定住

左边和右边了,然后记录i 和 i之前数的最大最小值,因为i下标和i下标之前的数一定是符合我们的下标条件了(那么这就是我们固定住了第一个条件,维护大小值),因为我们知道了下标就知道了

数,那么我们就维护最大最小值的下标

class Solution {
public:
    vector<int> findIndices(vector<int>& nums, int indexDifference, int valueDifference) 
    {
            int  n = nums.size();
            int min_index = 0;
            int max_index = 0;
            vector<int> ans;
            for(int j = indexDifference;j < n;j++)
            {
               int i = j - indexDifference;

               if(nums[i] > nums[max_index]) max_index = i;
               if(nums[i] < nums[min_index]) min_index = i;
               
               if (abs(nums[j] - nums[min_index]) >= valueDifference) return {min_index, j};
               if (abs(nums[j] - nums[max_index]) >= valueDifference) return {max_index, j};
            }

            return {-1,-1};
    }
};

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

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

相关文章

护眼灯买什么样的好?好用又实惠的护眼台灯推荐

护眼台灯的光照一般比较均匀&#xff0c;相比普通台灯&#xff0c;一般具有防蓝光、防频闪等功能&#xff0c;能够提供一个健康舒适的学习、生活灯光环境&#xff0c;建议选购内置智能感光模式的护眼台灯&#xff0c;以确保灯光亮度一直处于均衡状态&#xff0c;让眼睛更轻松。…

QQ怎么恢复照片?教你3个恢复方法!

QQ支持多样化的通讯方式&#xff0c;无论是文字、语音、视频通话还是文件传输&#xff0c;都可以通过QQ来实现。在工作或者学习时使用QQ&#xff0c;大大提高了沟通的效率和便利性。 然而&#xff0c;我们在使用QQ时可能会遇到各种问题&#xff0c;其中之一就是如何恢复删除的…

看李广的故事:发现团队管理之道

在漠北之战中&#xff0c;李广因迷失道路而延误了军期。因李广年事已高&#xff0c;无法承受幕府的责难&#xff0c;最终选择在军前自刎而死。 这一事件令人痛惜&#xff0c;不禁让人想起在工作中遇到的类似情况。有些同事因为突然离职&#xff0c;让领导感到愕然&#xff0c;…

基于Quartz实现动态定时任务

生命无罪&#xff0c;健康万岁&#xff0c;我是laity。 我曾七次鄙视自己的灵魂&#xff1a; 第一次&#xff0c;当它本可进取时&#xff0c;却故作谦卑&#xff1b; 第二次&#xff0c;当它在空虚时&#xff0c;用爱欲来填充&#xff1b; 第三次&#xff0c;在困难和容易之…

汽车之家车型_车系_配置参数数据抓取

// 导入所需的库 #include <iostream> #include <fstream> #include <string> #include <curl/curl.h> #include <regex>// 声明全局变量 std::string htmlContent; std::regex carModelRegex("\\d{4}-\\d{2}-\\d{2}"); std::regex ca…

LVS NAT 模式

1.3.2. LVS DR 模式 模式&#xff08;局域网改写 &#xff08;局域网改写 mac 地址&#xff09; ①.客户端将请求发往前端的负载均衡器&#xff0c;请求报文源地址是 CIP&#xff0c;目标地址为 VIP。 ②.负载均衡器收到报文后&#xff0c;发现请求的是在规则里面存在的地址&am…

OLED透明屏在教育领域的应用有哪些

OLED透明屏在教育领域有着广泛的应用&#xff0c;主要包括以下几个方面&#xff1a; 课堂教学&#xff1a;OLED透明屏可以作为投影屏幕&#xff0c;将教师讲解的内容清晰地呈现给学生。同时&#xff0c;学生可以直接在透明屏幕上进行标注、注释等操作&#xff0c;使得课堂教学…

【Java】云HIS云端数字医院信息平台源码

一、云HIS系统特色 • 使用简易化 即开即用&#xff0c;快速复制&#xff0c;按需开通功能模块&#xff0c;多机构共享机房、软件、服务器、存储设备等资源&#xff0c;资源利用最大化。 • 连锁集团化 可支持连锁集团化管理&#xff0c;1N模式&#xff0c;支撑运营&#x…

stable diffusion为什么能用于文本到图像的生成

推荐基于稳定扩散(stable diffusion) AI 模型开发的自动纹理工具&#xff1a; DreamTexture.js自动纹理化开发包 - NSDT 稳定扩散获得如此多关注的原因 如果你还没有看过它&#xff1a;稳定扩散是一个文本到图像的生成模型&#xff0c;你可以输入一个文本提示&#xff0c;比如…

jQuery中显示与隐藏

在我们jQuery当中&#xff0c;有多个显示隐藏的方法&#xff0c;本篇介绍一下hide()、show()、toggle() 在我们JS当中&#xff0c;或是CSS当中&#xff0c;我们常用到display:none或block; 在我们jQuery当中&#xff0c;我们该如何实现显示隐藏 在我们jQuery当中&#xff0c;我…

RK3568+Codesys+Xenomai实时软PLC运动控制解决方案

CODESYS软件架构 CODESYS软件分三层架构&#xff0c;可用下图来表示&#xff1a; 1、开发层 CODESYS Development System&#xff08;具有完善的在线编程和离线编程功能&#xff09;、编译器及其配件组件、可视化界面编程组件等&#xff0c;同时供用户可选的运动控制模块可使其…

stm32f407栈溢出导致跑程序异常

栈溢出&#xff0c;固件下载后&#xff0c;会运行异常。如下代码&#xff1a; 代码运行异常&#xff0c;进入debug&#xff0c;发现有hard fault的错&#xff1a; 因为栈已经溢出&#xff0c;一般MCU的栈地址都是向下增长的&#xff0c;stm32也是一样&#xff0c;stm32在启动文…

工业废水处理设备公司如何挑选

在选择工业废水处理设备公司时&#xff0c;需要从以下几个方面进行考虑&#xff1a; 公司实力和资质&#xff1a;选择具有相关资质和经验的废水处理设备公司&#xff0c;能够提供高质量的设备和服务。可以通过查询公司的官方网站、客户评价等信息来了解公司的实力和资质。设备…

关于Android Studio中开发Flutter配置

配置系统环境变量&#xff1a;path下 &#xff0c;flutter的bin目录下 File->Settings->Languages&Frameworks->FlutterFile->Settings->Languages&Frameworks->DartFile->Settings->Languages&Frameworks->Android SDK 确认是…

amazon产品采集数据

导入需要的库&#xff1a;requests&#xff0c;BeautifulSoup&#xff0c;re&#xff0c;chardet requests用于发送HTTP请求&#xff1b;BeautifulSoup用于解析HTML&#xff1b;re用于正则表达式&#xff1b;chardet用于识别网页编码。 定义函数&#xff0c;接受URL参数&#…

华为防火墙ipsec vpn nat穿越2种场景配置案例

第一种方法&#xff0c;分部出口有nat设备&#xff0c;且总部用模版&#xff0c;总部外线为固定地址&#xff0c;分部出口可以无固定地址。 主要配置&#xff1a; 所有默认策略全部放行&#xff0c;具体怎么开策略可以等通后用命令dis firewall session table ver看 security-…

事务(本地事务与分布式事务)

事务 1 本地事务1.1 事务的特性1.2 事务的隔离级别1.3 事务的传播属性 2 分布式事务2.1 分布式事务基础2.1.1 CAP定理2.1.2 BASE定理 2.2 分布式事务的解决方案2.2.1 两阶段提交&#xff08;2PC&#xff09;2.2.2 TCC补偿式事务2.2.3 消息事务最终一致性 1 本地事务 1.1 事务的…

观测云产品更新 | 数据转发、监控器告警策略等优化

数据转发 数据查询时间组件优化&#xff0c;支持选择多个日期&#xff0c;并可以自定义开始时间和结束时间&#xff0c;时间精确到小时。 监控器 > 告警策略优化 1、「通知配置」逻辑调整为&#xff1a;针对单个异常等级配置通知单个或多个对象告警通知。 2、「恢复通知」…

Qt5多线程<12>

1.多线程的简单实现 <1> 在头文件threaddlg.h声明用于界面显示所需的控件,其代码如下: #ifndef THREADDLG_H #define THREADDLG_H#include <QDialog> #include <QPushButton> #include "workthread.h" #define MAXSIZE 5class ThreadDlg : publ…

redis数据倾斜如何解决

Redis数据倾斜主要是由于数据访问热点导致的&#xff0c;通常在执行事务操作或范围查询时发生。这会导致大量数据集中在某个实例上&#xff0c;使得集群负载不均衡。以下是一些解决Redis数据倾斜的方法&#xff1a; 避免在同一个键值对上保存过多的数据。可以将大的键值对拆分…