首页 > 其他分享 >查分数组

查分数组

时间:2024-03-15 16:11:25浏览次数:26  
标签:nums int res 查分 length 数组 diff

// 差分数组工具类
class Difference {
    // 差分数组
    private int[] diff;
    
    /* 输入一个初始数组,区间操作将在这个数组上进行 */
    public Difference(int[] nums) {
        assert nums.length > 0;
        diff = new int[nums.length];
        // 根据初始数组构造差分数组
        diff[0] = nums[0];
        for (int i = 1; i < nums.length; i++) {
            diff[i] = nums[i] - nums[i - 1];
        }
    }

    /* 给闭区间 [i, j] 增加 val(可以是负数)*/
    public void increment(int i, int j, int val) {
        diff[i] += val;
        if (j + 1 < diff.length) {
            diff[j + 1] -= val;
        }
    }

    /* 返回结果数组 */
    public int[] result() {
        int[] res = new int[diff.length];
        // 根据差分数组构造结果数组
        res[0] = diff[0];
        for (int i = 1; i < diff.length; i++) {
            res[i] = res[i - 1] + diff[i];
        }
        return res;
    }
}

标签:nums,int,res,查分,length,数组,diff
From: https://www.cnblogs.com/tianyiya/p/18075657

相关文章

  • MATLAB学习笔记1.数组运算
    先来介绍两个常用的,在命令行里边输入“clc”,就会清空以上的命令行(也就是这个直接与你对话的地方)的所有内容;但是并不会把已经设置的变量清空,要想清空变量,则需要在命令行中输入“clear”,这样就可以把右侧已经设置的变量都清空掉了。下面是示例输入回车再输入“clear”并输入......
  • 108. 将有序数组转换为二叉搜索树c
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/structTreeNode*build(int*nums,inthead,inttail){if(head>tail)returnNULL;intmid=head+(......
  • golang 随机数组的性能对比测试
    最近需要用到随机数,但在随机数的生成方面遇到些问题,如加了seed后反而生成的数组是固定的,没有加是随机的,后面查资料了解到,如果seed值是一样的,序列中的值就固定的,而不加seed时,每次的都是随机的,后面想到如果用来做负载均衡呢,性能又如何。下面是源码:packagebenchimport( ......
  • 26. 删除有序数组中的重复项
    给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。classSolution{publicintremoveDuplicates(int[]nums){if(nums==n......
  • 稀疏数组与二维数组之间的转换
    稀疏数组介绍:稀疏数组:当一个数组中大部分元素为同一个值时,就可以考虑使用稀疏数组来保存数据节省空间。稀疏数组的原理:1)稀疏数组一共三列,第一行的第一列保存原二维数组的行数,第一行第二列保存原二维数组的列数,第一行第三列保存原二维数组非0数据的个数;2)稀疏数组一共有【原二维......
  • 【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
    leetcode链接题目描述给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1,-1]。你必须设计并实现时间复杂度为O(logn)的算法解决此问题。示例1:输入:nums=[5,......
  • 树状数组
    树状数组简介树状数组维护信息的类型:树状数组一般用来维护可差分的信息比如:累加和、累加乘或者出题人出了某个可差分的信息不可差分的信息:比如最大值、最小值不可差分的信息一般不用树状数组来维护,而会选择线段树来维护,因为线段树维护的思考难度低大多数情况下,线段树可以......
  • 一维数组_校门外的树
    任务描述某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表......
  • LeetCode题练习与总结:搜索旋转排序数组
    一、题目整数数组nums按升序排列,数组中的值互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[nums[k],nums[k+1],...,nums[n-1],nums[0],nums[1],...,nums[k-1]](下标从0开始计数)。例如,[0,1,2,4,5,6,7]......
  • 数组练习-小习题
    多个字符从两端开始移动,向中间汇聚输出,例如:打印Hello,word!第一个打印出来H(左一),然后打印!(右一),接着e(右二),下面是d(左二).......依次打印,这里介绍一个关键字:strlen(),用来测量字符串的长度,注意字符串如果带有"\0",strlen是不计算\0的,只计算\0之前的字符数。system(“cls”):清理屏幕。#i......