[差分数组] LeetCode789 得分最高的最小轮调

LeetCode 得分最高的最小轮调


今天当然CV了因为今天比较忙,所以直接走算法,因为什么都不做的话并不符合社会主义核心价值观,今天小学一手查分数组。


题目:并不存在CV了还写什么题解


算法背景:

本着一切从简的原则,今天就直接开门见山的说了,查分数组就是为了解决大量数据的批量操作问题,场景:现在又很大的一组数组,然后让我们从1到100W加1,那么我们如果一个一个做的话o(n)的复杂度对于这个题目背景来说显然很不人道,所以在这里引入了一个人道的数组,array[y] 来记做查分数组,对于数组的每个元素,array[i] = original[i]-original[i-1](特别的当i==0的时候Original[i-1]记做0)那么我们将得到一个数组时原先数组的邻位差(一般高位减地位),而在这时我们回到原先的问题,当1~100W的位置的数同时加a的时候,显然其中查分数组只有两位发生变化,为了规范化的标记两个查分数组变化位置我们将原来的变化左右区间的端点值分为计为low位和high为,那么差分数组此时的变化就记做array[low] + a ;array[heigh+1] + a;

获取元数组的值 :array[i] = original[i]-original[i-1]直接用介个公式自己吧 Original 移动到等号的一侧,答案那是显而易见。

posted @ 2022-03-09 23:25  什么塞瓦定理啊  阅读(40)  评论(0)    收藏  举报