力扣每日一题 ---- 1906. 查询差绝对值的最小值

news/2024/7/5 2:00:26

本题中,我们的题目求的是差值的最小值,我们考虑一个因素,当前题目中给出的数组是没有排序过的,那么想要求的差值,是不是要两两配对进行判断差值最小值。这里我们就很费时间了,

O(N^2)的时间复杂度,那么我们怎么办呢?排序吗?不太行,排完序的话,后面查询就很麻烦了,不可取,此时我们在注意一下数据,数字只有100,那么这个就是这题的关键点之一了,只有100个数。那么我们再来考虑差值的最小值,差值的最小值是不是只有相邻的两数才行,如果不相邻的话,那么必然不可能是差值最小值。所以这是第二个关键点,贪心,贪的是相邻的数。

那么我们怎么知道区间之内的数有哪些呢,前缀和,但是前缀和我们只知道数有多少个了,那怎么知道该区间有没有这个数,这个我们也是可以通过前缀和知道的,因为我们统计的前缀和是区间内的数字的个数,那么我们就可以知道这个个数了,利用前缀和性质,相减一下就知道个数了。

那么我们利用前缀和求出个数,利用贪心的思想,我们就可以解决这道题目了

class Solution {
public:
    int ss[111000][110];
    vector<int> minDifference(vector<int>& nums, vector<vector<int>>& queries) 
    {
       memset(ss,0,sizeof(ss));
       ss[1][nums[0]]++;
       int n = nums.size();
       for(int i = 2;i <= n;i++)
       {
          memcpy(ss[i],ss[i - 1],sizeof(ss[i]));
          ss[i][nums[i - 1]]++;
       }
       vector<int> ans;
       for(auto&q:queries)
       {
           int prev = -1;
           int left = q[0];
           int right = q[1];
           int res = 0x3f3f3f3f;
           for(int i = 1;i <= 100;i++)
           {
               if(abs(ss[right + 1][i] - ss[left][i]) > 0)
               {
                   if(prev != -1)
                   {
                       res = min(res,i - prev);
                   }
                   prev = i;
               }
           }

           if(res != 0x3f3f3f3f) ans.push_back(res);
           else ans.push_back(-1);
       }
       return ans;
    }
};


http://lihuaxi.xjx100.cn/news/2008492.html

相关文章

2024年第九届信号与图像处理国际会议(ICSIP 2024)

2024第九届信号与图像处理国际会议&#xff08;ICSIP 2024&#xff09;将于2024年7月12-14日在中国南京召开。ICSIP每年召开一次&#xff0c;在过去的七年中吸引了1200多名与会者&#xff0c;是展示信号和图像处理领域最新进展的领先国际会议之一。本次将汇集来自亚太国家、北美…

SpringBoot中异步方法的使用

1. 使用CompletableFuture 实例如下: Autowired Resource(name "threadPoolTaskExecutor") private ThreadPoolTaskExecutor threadPoolTaskExecutor;GetMappingpublic String testAsync() {CompletableFuture.supplyAsync(() -> {try {Thread.sleep(10000L);}…

wangEditor v4的简单使用

当前文档是 wangEditor v4 版本的。 wangEditor v5 已经正式发布&#xff0c;可参考文档。 v5 发布之后&#xff0c;v4 将不再开发新功能。 介绍 English documentation wangEditor4 —— 轻量级 web 富文本编辑器&#xff0c;配置方便&#xff0c;使用简单。 官网&#…

jupyter设置环境变量

要在Jupyter中设置环境变量&#xff0c;可以按照以下方法之一进行操作&#xff1a; 1. 在Jupyter Notebook中设置环境变量&#xff1a; - 打开Jupyter Notebook。 - 创建一个新的或打开一个已有的Jupyter Notebook。 - 在Notebook的代码单元格中&#xff0c;使用%env…

C++类和对象入门(二)

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、类的作用域 类定义了一个新的作用域&#xff0c;类的所有成员都在类的作用域中。在类体外定义成员时&#xff0c;需要…

程序员的悲哀:知名Python库requests作者失业了

在当今这个快速发展的科技时代&#xff0c;程序员作为创新的驱动力&#xff0c;一直被视为时代的宠儿。然而&#xff0c;即使在这样一个充满机会的领域&#xff0c;也有着不为人知的辛酸。近日&#xff0c;一个令人震惊的消息传遍了编程社区&#xff1a;知名Python库requests的…

Unity之第一人称角色控制

目录 第一人称角色控制 &#x1f634;1、准备工作 &#x1f4fa;2、鼠标控制摄像机视角 &#x1f3ae;3、角色控制 &#x1f603;4.杂谈 第一人称角色控制 专栏Unity之动画和角色控制-CSDN博客的这一篇也有讲到角色控制器&#xff0c;是第三人称视角的&#xff0c;以小编…

【PTA浙大版《C语言程序设计(第4版)》编程题】练习7-4 找出不是两个数组共有的元素(附测试点)

目录 输入格式: 输出格式: 输入样例: 输出样例: 代码呈现 测试点 给定两个整型数组&#xff0c;本题要求找出不是两者共有的元素。 输入格式: 输入分别在两行中给出两个整型数组&#xff0c;每行先给出正整数N&#xff08;≤20&#xff09;&#xff0c;随后是N个整数&a…