算法题-最大值减去最小值小于或等于 num 的子数组数量
来源:互联网 发布:js 判断是否包含key 编辑:程序博客网 时间:2024/05/16 11:01
【题目】
给定数组 arr 和整数 num,共返回有多少个子数组满足如下情况:
max(arr[i..j]) - min(arr[i..j]) <= num
max(arr[i..j])表示子数组 arr[i..j]中的最大值,min(arr[i..j])表示子数组 arr[i..j]中的最 小值。
【要求】
如果数组长度为 N,请实现时间复杂度为 O(N)的解法。
import java.util.LinkedList;/** * Created by 糖糖 on 2017/8/2. */public class getnum33 { public static int getnum(int arr[],int num){ LinkedList<Integer> qmin=new LinkedList<>(); LinkedList<Integer> qmax=new LinkedList<>(); int res=0; int i=0; int j=0; while (i<arr.length){ while (j<arr.length){ while (!qmin.isEmpty() && arr[qmin.peekLast()]>= arr[j]) qmin.pollLast(); qmin.addLast(j); while (!qmax.isEmpty() && arr[qmax.peekLast()]<=arr[j]) qmax.pollLast(); qmax.addLast(j); if(arr[qmax.peekFirst()]-arr[qmin.peekFirst()]>num) break; j++; } if(i==qmin.peekFirst()) qmin.pollFirst(); if(i==qmax.peekFirst()) qmax.pollFirst(); res+=j-i; i++; } return res; } public static void main(String args[]){ int arr[]={3,4,5,1,7,8}; System.out.print(getnum(arr,2)); }}
阅读全文
0 0
- 算法题-最大值减去最小值小于或等于 num 的子数组数量
- 算法题-最大值减去最小值小于或等于 num 的子数组数量
- 最大值减去最小值小于等于num的子数组数量
- 数据结构 最大值减去最小值小于或等于num的子数组数量
- 最大值减去最小值小于或等于num的子数组数量
- 最大值减去最小值小于或等于num的子数组数量
- 栈和队列---最大值减去最小值小于或等于num的子数组数量
- 最大值减去最小值小于或等于num的子数组数量
- 栈和队列——最大值减去最小值小于或等于num的子数组数量
- 1.10 最大值减去最小值小于或等于num的子数组数量
- 最大值减去最小值小于或者等于num的子数组数量
- 子数组系列二:最大值减去最小值小于或等于 k 的子数组数量
- 滑动窗口变形题-最大值减去最小值小于等于num的子数组
- 左神的书——《程序员代码面试指南》之最大值减去最小值小于或等于num的子数组的数量 c++实现
- 【算法】最大值和最小值的差小于或者等于num的子数组数量
- 栈和队列(8)-- 最大值减去最小值小于或者等于num的子数组
- 未排序数组中累加和小于或等于给定值的最长子数组长度
- 数组与矩阵---未排序数组中累加和小于或等于给定值的最长子数组问题
- Android thinker
- codeforces 835 a Key races
- php array_push array_unique使用
- activeMQ的应用场景
- JSP自定义标签
- 算法题-最大值减去最小值小于或等于 num 的子数组数量
- JPEG2000 小波变换
- java-集合
- PAT甲级 1028. List Sorting (25)
- 解决scalac Error: bad option -make:transitive
- JavaMail定时发送邮件
- UVA 257 Palinwords
- 生成器(Builder)
- 网友年龄 某君新认识一网友。 当问及年龄时,他的网友说: “我的年龄是个2位数,我比儿子大27岁, 如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄” 请你计算:网友的年龄一共有多少种