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

2023-11-10 18:30

本文主要是介绍力扣每日一题 ---- 2905. 找出满足差值条件的下标 II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

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

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

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};}
};

这篇关于力扣每日一题 ---- 2905. 找出满足差值条件的下标 II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/384486

相关文章

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用

SpringBoot条件注解核心作用与使用场景详解

《SpringBoot条件注解核心作用与使用场景详解》SpringBoot的条件注解为开发者提供了强大的动态配置能力,理解其原理和适用场景是构建灵活、可扩展应用的关键,本文将系统梳理所有常用的条件注... 目录引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、@ConditionalOn

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

Nginx中location实现多条件匹配的方法详解

《Nginx中location实现多条件匹配的方法详解》在Nginx中,location指令用于匹配请求的URI,虽然location本身是基于单一匹配规则的,但可以通过多种方式实现多个条件的匹配逻辑... 目录1. 概述2. 实现多条件匹配的方式2.1 使用多个 location 块2.2 使用正则表达式

详解如何在React中执行条件渲染

《详解如何在React中执行条件渲染》在现代Web开发中,React作为一种流行的JavaScript库,为开发者提供了一种高效构建用户界面的方式,条件渲染是React中的一个关键概念,本文将深入探讨... 目录引言什么是条件渲染?基础示例使用逻辑与运算符(&&)使用条件语句列表中的条件渲染总结引言在现代

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

Python按条件批量删除TXT文件行工具

《Python按条件批量删除TXT文件行工具》这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.简介2.运行效果3.相关源码1.简介一个由python编写android的可根据TXT文件按条件批

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close