使用滑动窗口维护当前区间的最大值和最小值,通过双端队列高效更新。当新增元素导致最大值与最小值的差超过k时,当前区间作为一个分组,分组数增加,并从当前元素重新开始新的窗口。这样确保分组数最少。
import java.io.BufferedReader;
在一个信号处理系统中,一段长信号由 n 个连续采样的强度值组成,第 i 个强度值为 xi。现在需要将这段信号切分成若干连续的段,使得每一段内部的信号强度波动不超过容忍上限。具体地,对于任意一段,我们将其波动幅度定义为该段内所有强度值的最大值与最小值之差。要求每一段的波动幅度都不超过给定的阈值 K。请你计算最少需要将信号切分成多少段。
信号采样点个数 n 满足 1≤n≤105,阈值 K 满足 0≤K≤109,每个强度值 xi 满足 0≤xi≤109。
第一行包含两个整数 n 和 K,分别表示信号采样点的数量以及允许的最大波动阈值。 第二行包含 n 个整数 x1,x2,…,xn,依次表示每个采样点的信号强度值。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册